函数参数类型和 =>

2024-01-06

方法参数的声明到底意味着什么:

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(使用前将#替换为@)

函数参数类型和 => 的相关文章

随机推荐