Scala Tour Of Scala 文档以 whileLoop 函数为例解释了按名称传递的参数。
def whileLoop(condition: => Boolean)(body: => Unit): Unit =
if (condition) {
body
whileLoop(condition)(body)
}
var i = 2
whileLoop (i > 0) {
println(i)
i -= 1
} // prints 2 1
该部分解释说,如果不满足条件,则不评估主体,从而通过不评估未使用的代码主体来提高性能。
Scala 的实现是否while
已经使用了按名称传递的参数?
如果有原因或特定情况下实现无法使用按名称传递的参数,请向我解释,到目前为止我还没有找到任何相关信息。
编辑:根据Valy Dia(https://stackoverflow.com/users/5826349/valy-dia)的回答,我想添加另一个问题......
如果在某些情况下根本不评估主体,while 语句的方法实现会比语句本身更好吗?如果是这样,为什么要使用 while 语句呢?
我将尝试对此进行测试,但我是 Scala 新手,因此可能需要一些时间。如果有人愿意解释,那就太好了。
干杯!