方法参数的声明到底意味着什么:
def myFunc(param: => Int) = param
的含义是什么=>
在上层定义中?
这就是所谓的传名。这意味着您正在传递一个应该返回的函数Int
但主要用于实现参数的惰性求值。它有点类似于:
def myFunc(param: () => Int) = param
这是一个例子。考虑一个answer
函数返回一些Int
value:
def answer = { println("answer"); 40 }
和两个函数,一个取Int
和一个采取Int
by-name:
def eagerEval(x: Int) = { println("eager"); x; }
def lazyEval(x: => Int) = { println("lazy"); x; }
现在使用以下命令执行它们answer
:
eagerEval(answer + 2)
> answer
> eager
lazyEval(answer + 2)
> lazy
> answer
第一种情况很明显:调用之前eagerEval()
answer
被评估并打印"answer"
细绳。第二种情况更有趣。我们实际上将一个函数传递给lazyEval()
. The lazyEval
第一张印刷品"lazy"
并评估x
参数(实际上,调用x
函数作为参数传递)。
See also
- Scala 返回一个带有 0 个参数的 void 函数,语法丑陋? https://stackoverflow.com/questions/7933786
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)