scala - 在 Scala 中使用 def 定义字段是什么意思?

标签 scala

究竟有什么区别:

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/

相关文章:

java - 重载方法值 ofDim 与 scala 中的替代方案

scala - Spray.can.server.request-timeout 属性无效

scala - 如何将带有映射模板的索引放入带有elastic4s的 Elasticsearch 中?

scala - 要映射的键值对字符串

scala - 用于排除的 Squeryl 语法是什么(即 != )?

mysql - 将 Biginteger 转换为 long 会导致错误

一般处理枚举的 Scala 类

class - 在 Scala final case 类中使用 new

scala - 您如何通过 Play Framework 中的 Websockets 将数据从 Kafka 流发送到客户端?

java - 玩框架 2.1.x 和 EbeanServer