我有一个Scala域类(用于持久化到数据库) 像:
class Foo() {
var bar: Long = _ // or None or null ???
var jaz: String = _ // or None or null or empty string "" ???
}
如果字段bar和jaz是必填字段而不是,则如何影响答案 是可选的吗?
答案 0 :(得分:6)
使用Option
使类的用户清楚该值是可选的。在Scala中不鼓励使用null,并且会让其他开发人员感到惊讶。它也没有出现"在类型中。如果该字段不可选,则不要使用Option
并使字段构造参数。不要提供一个构造函数,在创建后将对象置于无效状态。
答案 1 :(得分:5)
来自Scala的编程:
字段的初始值设定项“= _” 为该字段分配零值。 零值取决于字段 类型。数字类型为0,为false 对于布尔值,null为参考 类型。这和如果相同 变量是在Java中定义的 初始化器。请注意,你不能 只需省略“= _”初始化程序 在Scala中...... [因为它]会声明一个抽象变量,而不是未初始化的变量
所以上面的代码与
相同class Foo() {
var bar: Long = 0
var jaz: String = null
}
Kim的答案听起来是正确的 - 如果某个字段是可选字段,请将其设为选项,否则,请让构造函数设置它。