didSet()
初期化コンテキストの外で関数を呼び出さずに、Swift でプロパティの値を設定するにはどうすればよいですか? noside()
以下のコードは、クラスの関数内でこれを達成するための失敗した実験でした
class Test
{
var toggle : Bool = 0
var hoodwink : Int = 0 {
didSet(hoodwink)
{
toggle = !toggle
}
}
// failed attempt to set without a side effect
func noside(newValue : Int)
{
hoodwink = newValue
println("hoodwink: \(hoodwink) state: \(toggle)")
}
func withside(newValue : Int)
{
self.hoodwink = newValue
println("hoodwink: \(hoodwink) state: \(toggle)")
}
}
自動合成されたプロパティを使用して Objective-C で行うのは非常に簡単です。
副作用あり (setter に存在する場合):
self.hoodwink = newValue;
副作用なし:
_hoodwink = newValue;