swift 扩展和协议的结合

2017-06-28  本文已影响9人  BetterComingDay

协议和扩展是可以结合使用的,可以通过扩展使已有的类型采纳某个协议,也可以对现有协议进行扩展。

一、通过扩展采纳协议

不论是否能够访问一个已有类型的源代码,都可以通过扩展使该类型采纳或实现某个协议,以增加该类型的功能。

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
上一篇下一篇

猜你喜欢

热点阅读