scala - Scala 中 def 和 val 的区别

标签 scala

循环定义如下:

 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/

相关文章:

scala - 如何在Akka HTTP中匹配所有路径

scala - 如何在 sbt 中执行 grep

Scala值类,用例

java - 在 Scala 中通过 SimpleDateFormat 转换后如何保持 DateTime 为 DateTime 格式?

java - 如何在 Scala 中使用 java.String.format?

scala - Scala中的foreach循环

Scala:查找并更新列表中的一个元素

scala - 通过 SOCKS 代理连接到 spark

inheritance - scala 中亚型多态性的替代方法是什么?

scala - 无形:Generic.Aux