The Swift Programming Language: Propertiesより
これは簡単でびっくりだ。C#のPropertyChangedよりもイケてる仕組みだと思う。
class StepCounter {
var totalSteps: Int = 0 {
willSet(newTotalSteps) {
println("About to set totalSteps to \(newTotalSteps)")
}
didSet {
if totalSteps > oldValue {
println("Added \(totalSteps - oldValue) steps")
}
}
}
}
let stepCounter = StepCounter()
stepCounter.totalSteps = 200
stepCounter.totalSteps = 300
willSetってのは値がセットされる前に呼ばれる。didSetは値をセットした直後に呼ばれる。didSetしたらCallBackを呼び出すとかしちゃえば、簡単にObserverパターンが実装できる。イイね。