【发布时间】:2018-03-13 21:53:48
【问题描述】:
自从和我引用 Martin Odersky 的话:
- def 形式是“按名称”,其右侧在每个 使用。
- val 定义的右侧在 定义本身。
在这种情况下:
def loop: Boolean = loopval x = loop // Leads to an infinite loop
在这种情况下:
val y: Boolean = y // Evaluated to false
我有点困惑为什么:
val x = loop // doesn't get evaluated to false?
【问题讨论】:
-
因为要评估
loop的值,您首先需要评估loop的值。这是一个没有转义条件的递归调用 -
问题的重点很奇怪。很明显,
val x = loop应该永远挂起。不太明显的是为什么val y: Boolean = y会做任何事情。 -
感谢 Andrey 重新表述我的问题。我认为这个问题的重点很奇怪,因为我不知道 def 和 val 的基本程序。
标签: scala functional-programming