我有一个Scala的领域类(用于持久化到数据库) ,如:班级成员分配给无或null或_斯卡拉这是更好的,为什么?
class Foo() {
var bar: Long = _ // or None or null ???
var jaz: String = _ // or None or null or empty string "" ???
}
如何,如果场酒吧和Jaz是必填字段,而不是 是可选的答案被影响?
我有一个Scala的领域类(用于持久化到数据库) ,如:班级成员分配给无或null或_斯卡拉这是更好的,为什么?
class Foo() {
var bar: Long = _ // or None or null ???
var jaz: String = _ // or None or null or empty string "" ???
}
如何,如果场酒吧和Jaz是必填字段,而不是 是可选的答案被影响?
从编程Scala中:
场 的初始值设定“= _”分配一个零值到该字段。 零值取决于该字段的 类型。数字类型为0,布尔值为假 ,参考 类型为null。这与在不使用 初始化程序的Java中定义相同的 变量相同。需要注意的是,你不能简单地 离开关“= _”初始化 斯卡拉... [它]将宣布一个抽象的变量,而不是一个未初始化的上述一个
所以你的代码是一样的
class Foo() {
var bar: Long = 0
var jaz: String = null
}
Kim的答案听起来是正确的 - 如果一个字段是可选的,使它成为一个选项,如果没有,使构造函数设置它。
使用Option
使该类的用户清楚该值是可选的。在Scala中不鼓励使用null,会让其他开发人员感到惊讶。它也不会在该类型中“显示”。如果该字段不是可选的,则不要使用Option
并设置字段构造器参数。不要提供一个构造函数,它会在创建后让对象处于无效状态。