[Swift]Swift中的extension

Swift 中扩展有两种方式,一种是 extension ,一种是 extension where

1.30.1. extension

直接使用这种方式扩展时,所有子类都具有扩展后的成员。如下:

protocol CusProtocol {}

extension  CusProtocol {
    static func sayHello(){
        print("Hello")
    }
}

通过如上方式我们为 CusProtocol 扩展了一个 sayHello() 函数,任意类实现了我们这个 CusProtocol 接口的类都可以调用 sayHello()

1.30.2. extension where

protocol CusProtocol {}

extension  CusProtocol where Self:UIView {
    static func sayHello(){
        print("Hello")
    }
}

上述代码中我们也为 CusProtocol 扩展了一个 sayHello() 函数,但也限定了范围:只有当一个类实现了 CusProtocol 接口,并且这个类同时也是 UIView 的子类时,才可以调用 sayHello() 函数。

上述代码中 where 关键字后面的 Self 表示当前接口的实现类。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容