循环定义如下:
def loop : Boolean = loop
当 x 定义为:
def x = loop
然后“x:Boolean”显示在控制台中。和
当 x 定义为:
val x = loop
然后进入无限循环我知道 def 正在使用按名称调用,而 val 正在使用按值调用。尽管上面定义的关于循环的这一点不是很清楚。
最佳答案
def
不评估作业的右侧。就像
def f(x : Int) = x + 2
不(在这种情况下逻辑上不能)评估
f
任何东西,只需定义函数 f
, 意味着,两者都不是 def loop : Boolean = loop
也不是 def x = loop
评价任何东西。您只是定义了一个要在其他时间执行的函数。但是
val
s 确实需要对赋值的右侧进行评估。所以val x = loop
尝试执行右侧的表达式。正在尝试评估 loop
但是,从不终止,因为 loop
是一个无限循环。
关于scala - Scala 中 def 和 val 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49144271/