究竟有什么区别:
scala> def foo = 5
foo: Int
和
scala> def foo() = 5
foo: ()Int
似乎在这两种情况下,我最终都会得到一个变量
foo
我可以不加括号地引用,总是评估为 5
.
最佳答案
在任何一种情况下,您都没有定义变量。您正在定义一个方法。第一个方法没有参数列表,第二个方法有一个参数列表,它是空的。其中第一个应该是
这样叫
val x = foo
而第二个应该像这样调用
val x = foo()
但是,Scala 编译器允许您使用一个不带括号的空参数列表调用方法,因此任何一种调用形式都适用于第二种方法。没有参数列表的方法不能用括号调用
首选的 Scala 风格是定义和调用带有括号的副作用的无参数方法。没有副作用的无参数方法应该在没有括号的情况下定义和调用。
如果你实际上要定义一个变量,语法是
val foo = 5
关于scala - 在 Scala 中使用 def 定义字段是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3494320/