जब मैं noise
फ़ंक्शन को ओवरराइड करता हूं, तो फ़ंक्शन को नए द्वारा प्रतिस्थापित किया जाता है। लेकिन जब मैं एक पर्यवेक्षक के साथ एक संपत्ति को ओवरराइड करता हूं, तो पुराना और नया मूल्य दोनों निष्पादित हो जाता है।संपत्ति पर्यवेक्षक को ओवरराइड करें
खेल का मैदान में:
class Vehicle {
func noise(sound: String) {
println("Vehicle sound sounds like \(sound)")
}
}
class Train: Vehicle {
override func noise(sound: String) {
println("A train does: \(sound)")
}
}
आउटपुट:
var oldTrain = Train()
bulletTrain.noise("tjoek tjoek") // Prints: "A train does: tjoek tjoek"
लेकिन जब मैं एक पर्यवेक्षक के साथ एक संपत्ति के साथ भी ऐसा ही:
खेल का मैदान में:
class Foo {
var something: Int! {
didSet {
println("vroom")
}
}
}
class Bar: Foo {
override var something: Int! {
didSet {
println("toot toot")
}
}
}
आउटपुट:
var foobar = Bar()
foobar.something = 3 // Prints: "vroom" & "toot toot"
तो मुझे पर्यवेक्षक के साथ एक संपत्ति को ओवरराइड करना और पुराने मूल्यों को कैसे निष्पादित करना है, इसे कैसे रोकना है?
पुरानी संपत्ति पर्यवेक्षक को निष्पादित करने से रोकने का कोई तरीका नहीं लगता है। – mrahmiao
यह आश्चर्यजनक है कि आप 'didSet' – Fattie