Swift-extension【扩展】
扩展能够向已有的类、结构体,枚举或协议类型添加新的功能。这包括在没有权限获取原始代码的情况下扩展类型的能力【即逆向建模】。扩展类似于Objective-C中的分类【categories】,与Objective-C分类不同的是,Swift的extension没有名称,Objective-C中的Category只能扩展类(类别)
extension中的private方法不能被已有实现类调用
Swift中的extension可以实现如下的所示的功能:
- 添加计算型属性和计算静态属性
- 定义实例方法和类型方法
- 提供新的构造器器
- 定义下标
- 定义和使用新的嵌套类型
- 使一个已有类型符合某个协议
计算型属性
距离转换
|
|
在上述代码中,计算属性的含义是把一个Double型的值看作是某单位下的长度值,实现距离转换
构造器
扩展能向类中添加新的便利构造器,不能向类中添加新的指定的构造器或析构造函数。指定构造器和析构造函数必须由原始类实现提供
|
|
扩展方法
可以向已有类型添加新的实例方法和类型方法。
扩展增加的实例方法可以修改实例本身。结构体和枚举类型中的方法如果想要修改实例本身或者属性的话需要用mutating
来修饰方法,所以扩展这样的方法也需要加mutating
。
向Int类型中添加一个名为repetions的新实例方法
|
|
下标
扩展可以向一个已有类型添加新下标
如果位数不足返回0
|
|
嵌套类型
|
|