作者:Erica Sadun呀舔,原文鏈接弥虐,原文日期:2016/08/08
譯者:Cwift;校對(duì):Cee媚赖;定稿:CMB
k 給我留言:「能在 setter 方法中調(diào)用父類么霜瘪?比如在賦新值時(shí)復(fù)寫(xiě) setter,而是調(diào)用其父類的方法惧磺?」
答案是當(dāng)然可以颖对。請(qǐng)看示例:
class Foo {
var value: String
init(value: String) { self.value = value }
}
class SubFoo: Foo {
override var value: String {
get { return super.value }
set { super.value = newValue.lowercased()
}
}
}
SubFoo
類和 Foo
類的功能相似,只不過(guò)在賦值時(shí)新值會(huì)被轉(zhuǎn)化成小寫(xiě)(雖然沒(méi)有把轉(zhuǎn)化操作放在初始化時(shí)進(jìn)行)磨隘。因此當(dāng)你新建一個(gè)子類的實(shí)例并且給它賦值一個(gè)大小寫(xiě)混合的字符串時(shí)缤底,子類會(huì)自動(dòng)把字符串轉(zhuǎn)化成小寫(xiě),然后再調(diào)用父類的賦值過(guò)程番捂。
let a = Foo(value: "Hello World")
let b = SubFoo(value: "Hello World")
debugPrint(a.value, b.value) // "Hello World", "Hello World"
b.value = "Hello Sailor"
debugPrint(a.value, b.value) // "Hello World", "hello sailor"
我不確定這個(gè)特性是否會(huì)帶來(lái)非常多的應(yīng)用場(chǎng)景个唧,不過(guò)我認(rèn)為絕對(duì)是有可能的。
本文由 SwiftGG 翻譯組翻譯设预,已經(jīng)獲得作者翻譯授權(quán)徙歼,最新文章請(qǐng)?jiān)L問(wèn) http://swift.gg。