我有一个Scala域类(用于持久化到数据库),如:
class Foo() {
var bar: Long = _ // or None or null ???
var jaz: String = _ // or None or null or empty string "" ???
}
Run Code Online (Sandbox Code Playgroud)
如果字段bar和jaz是必填字段而不是可选字段,如何影响答案?
使用Option使类的用户清楚该值是可选的.在Scala中不鼓励使用null,并且会让其他开发人员感到惊讶.它也没有"出现"在类型中.如果该字段不是可选字段,则不要使用Option和创建字段构造函数参数.不要提供在创建后将对象置于无效状态的构造函数.
来自Scala编程:
字段的初始化程序"= _"为该字段分配零值.零值取决于字段的类型.数字类型为0,布尔值为false,引用类型为null.这与在没有初始化程序的Java中定义相同变量的情况相同.请注意,您不能简单地在Scala中省略"= _"初始化程序... [因为它]将声明一个抽象变量,而不是未初始化的变量
所以你上面的代码是一样的
class Foo() {
var bar: Long = 0
var jaz: String = null
}
Run Code Online (Sandbox Code Playgroud)
Kim的回答听起来是正确的 - 如果一个字段是可选的,那么把它变成一个Option,如果没有,让构造函数设置它.
| 归档时间: |
|
| 查看次数: |
853 次 |
| 最近记录: |