Swift 中擴展有兩種方式,一種是 extension ,一種是 extension where。
1.30.1. extension
直接使用這種方式擴展時,所有子類都具有擴展后的成員。如下:
protocol CusProtocol {}
extension CusProtocol {
static func sayHello(){
print("Hello")
}
}
通過如上方式我們?yōu)? CusProtocol 擴展了一個 sayHello() 函數(shù),任意類實現(xiàn)了我們這個 CusProtocol 接口的類都可以調(diào)用 sayHello()
1.30.2. extension where
protocol CusProtocol {}
extension CusProtocol where Self:UIView {
static func sayHello(){
print("Hello")
}
}
上述代碼中我們也為 CusProtocol 擴展了一個 sayHello() 函數(shù),但也限定了范圍:只有當(dāng)一個類實現(xiàn)了 CusProtocol 接口,并且這個類同時也是 UIView 的子類時,才可以調(diào)用 sayHello() 函數(shù)。
上述代碼中 where 關(guān)鍵字后面的 Self 表示當(dāng)前接口的實現(xiàn)類。