swift 擴展和協議的結合

協議和擴展是可以結合使用的,可以通過擴展使已有的類型采納某個協議,也可以對現有協議進行擴展。

一、通過擴展采納協議

不論是否能夠訪問一個已有類型的源代碼,都可以通過擴展使該類型采納或實現某個協議,以增加該類型的功能。

protocol Name{
    var name: String{get}
}

class Animal{
    var legs:Int = 4
}

extension Animal : Name{
    var name: String{
        return "Animal"
    }
}

let ani = Animal()
print(ani.name)

控制臺:

Animal

tips:當一個類型符合了某個協議的所有要求,確還沒有聲明采納該協議,類型并不會自動采納協議,此時可以通過一個空擴展來采納協議。
eg. extension Animal:Name{}

二、協議擴展

//協議可以通過擴展來為采納協議的類型提供屬性、方法及下表腳本的實現。這樣可以基于協議本身來實現這些功能,而無需在每個采納協議的類型中都重復同樣的實現。很強大

protocol Animal{
    var name:String{get set}
}

extension Animal{
    func run(){
        print("I am running")
    }
}

class Dog : Animal{
    var name:String = "Animal"
}

let dog = Dog()
dog.run()

控制臺:

I am running
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容