Property Observers

定義一個 ParentsCar class

class Car: Vehicle {
   var speed = 0.0
   init() {
       super.init()
       numberOfWheels = 4
   }
   override var description: String {
       return super.description + ", \(speed) mph"
   }
}

class ParentsCar: Car {
  override var speed: Double {

  }
}

假設,ParentsCar 的功能為「觀察速度是否太快,如果太快就會秀出警告訊息」。我們可以 override speed 這個 property,並利用 Swift 的語法建立 Observer,例如:

class ParentsCar: Car {
    override var speed: Double {
        willSet{
            println("newValue:\(newValue)")
        }
        didSet{
            println("oldValue:\(oldValue)")
        }
    }
}

var pCar = ParentsCar()
pCar.speed = 10;

執行上面程式碼,會得到:

newValue:10.0
oldValue:0.0
  1. willSet{}didSet{} 都是 Swift 中的 keyword。
  2. newValuewillSet{} 中是 keyword,代表「最新的結果」。
  3. oldValuedidSet{} 中是 keyword,代表「改變之前的結果」。

因此只要 speed 有被改變,就會執行 willSet{}didSet{}

下一篇: Class Methods