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这个变量。
- 定义变量