【发布时间】:2015-01-13 11:08:06
【问题描述】:
在以下示例中:
def maybeTwice2(b: Boolean, i: => Int) = {
lazy val j = i
if (b) j+j else 0
}
为什么当我这样称呼它时 hi 没有打印两次:
maybeTwice2(true, { println("hi"); 1+41 })
这个例子实际上来自“Scala 中的函数式编程”一书,给出的原因是为什么“hi”没有被打印两次,这对我来说不够有说服力。所以就想在这里问这个!
【问题讨论】:
-
请接受答案或要求更详细的解释。
-
目前尚不清楚为什么您认为“给出的理由”“没有说服力”。
i是一个函数。maybeTwice2引用(调用)一次。为什么你期望它一开始会被调用两次? -
我本来希望你给出的解释会出现在书中。这对我来说更有意义!