协议扩展

Swift 2.2 的一个非常有用的功能是具有扩展协议的能力。

当你想要在所有实现某些协议的类中使用的功能时(无需从基础公共类继承),它的工作方式与抽象类非常相似。

protocol FooProtocol {
    func doSomething()
}

extension FooProtocol {
    func doSomething() {
        print("Hi")
    }
}

class Foo: FooProtocol {
    func myMethod() {
        doSomething() // By just implementing the protocol this method is available
    }
}

使用泛型也可以这样做。