/**
属性观察器
观察属性的变化,是指属性被修改时可以调用我们事先写好的代码去额外执行一些操作。
类似于OC中的KVO
存在两种属性观察器
1. willSet 在设置新值的时候调用
2. didSet 在设置新值的之后调用
可以直接为除 lazy属性之外的存储属性添加属性观察器,你不可以直接给类里面的计算属性添加属性观察器,
当然也可以在继承类中为父类的计算属性提供属性观察器(后面再讲)。
*/
struct MyRect {
var origion:(x: Double,y: Double) = (0,0) {
willSet {
print("will set==\(newValue.x) \(newValue.y)")
}
didSet {
print("did set==\(oldValue.x) \(oldValue.y)")
}
}
var size: (w: Double,h: Double) = (0,0)
var center: (x: Double,0)
}
var rect = MyRect()
rect.size = (100,100)
rect.origion = (9,9) // setter 写
let dd = rect.origion // getter 读
rect.center = (rect.origion.x + rect.size.w / 2,rect.origion.y + rect.size.h / 2)