Swift文件Chapter 20 擴充套件
阿新 • • 發佈:2022-01-24
擴充套件可以給現有的類,結構體,列舉還有協議新增新的功能。
擴充套件的語法
extension SomeType {
// 在這裡給 SomeType 新增新的功能
}
擴充套件可以擴充一個現有的型別,給它新增一個或多個協議。協議名稱的寫法和類或者結構體一樣:
extension SomeType: SomeProtocol, AnotherProtocol {
// 協議所需要的實現寫在這裡
}
計算型屬性
extension Double { var km: Double { return self * 1_000.0 } var m: Double { return self } var cm: Double { return self / 100.0 } var mm: Double { return self / 1_000.0 } var ft: Double { return self / 3.28084 } }
擴充套件可以新增新的計算屬性,但是它們不能新增儲存屬性,或向現有的屬性新增屬性觀察者。
構造器
擴充套件可以給現有的型別新增新的構造器,通過擴充套件提供一個新的構造器,你有責任確保每個通過該構造器建立的例項都是初始化完整的。
方法
擴充套件可以給現有型別新增新的例項方法和類方法。
可變例項方法
通過擴充套件新增的例項方法同樣也可以修改(或 mutating
(改變))例項本身。結構體和列舉的方法,若是可以修改self
或者它自己的屬性,則必須將這個例項方法標記為mutating
,就像是改變了方法的原始實現。
下標
擴充套件可以給現有的型別新增新的下標。
巢狀型別
擴充套件可以給現有的類,結構體,還有列舉新增新的巢狀型別。