在scala中分配给None或null或_的类成员哪个更好,为什么?

时间:2011-07-08 15:48:24

标签: scala

我有一个Scala域类(用于持久化到数据库) 像:

class Foo() {

var bar: Long = _ // or None or null ???
var jaz: String = _ // or None or null or empty string "" ???
}

如果字段bar和jaz是必填字段而不是,则如何影响答案 是可选的吗?

2 个答案:

答案 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的答案听起来是正确的 - 如果某个字段是可选字段,请将其设为选项,否则,请让构造函数设置它。