4
我定義一個類:斯威夫特:覆蓋對象的方法
class Person {
func speak(phrase: String) {
NSLog("\(phrase)")
}
}
假設我想改變speak
方法的行爲。在java中,我會覆蓋此方法:
Person p = new Person() {
@Override
public void speak(String phrase) {
// Do something different
}
};
如何重寫Swift中的方法?我嘗試了以下無濟於事:
let person = Person()
person.speak = { (String) ->() in
// Do something different
}
錯誤:Cannot assign to 'speak' in 'person'
我知道我可以設置一個變量來改變行爲或子類的人,但我想不同的使用情況,其中像這是必要的。使用這個例子更容易解釋。
編輯:包括使用函數屬性來模擬想要的內容。 – mxcl 2015-02-23 17:16:39