Chapter 18 《Mutable Objects》
2018-07-02 本文已影响3人
liqing151
可变对象
- 可变对象的状态会随着时间而发生改变,与在类中有没有定义
var
并没有直接关联,有可能定义了var
但只赋值了一次,操作的时候每次对该值的访问也是不变的。
可被重新赋值的变量和属性
- 做两种基本操作:获取值和修改值。
-
- 在
Scala
中,每一个非私有的var
成员都隐式地定义了相应的getter
和setter
方法。var x
的getter
方法就是x
,setter
的方法命名为x_=xx
class Time { var hour = 12 var minute = 0 } class Time { private[this] var h = 12 private[this] var m = 0 def hour: Int = h def hour_=(x: Int) = { h = x } def minute: Int = m def minute_=(x: Int) = { m = x } }
getter
和setter
,直接定义这些方法可以按照用户自己的意愿来解释变量访问和赋值操作。在其中添加一些验证逻辑之类的。 - 在
- 定义变量
val a: Float = _
,a
会被赋予Float
类型的默认值,引用类型的默认值是null
。如果仅仅是定义了相关联的setter
和getter
,则可以像使用类变量一样来使用这个定义好的变量。例如定义了old
,old_=
函数,就可以直接使用object.old = 10
,尽管在类中并没有定义old
这个变量。
- 定义变量