Swift文档Chapter 20 扩展
扩展可以给现有的类,结构体,枚举还有协议添加新的功能。
扩展的语法
extension SomeType {
// 在这里给 SomeType 添加新的功能
}
扩展可以扩充一个现有的类型,给它添加一个或多个协议。协议名称的写法和类或者结构体一样:
extension SomeType: SomeProtocol, AnotherProtocol {
// 协议所需要的实现写在这里
}
计算型属性
extension Double {
var km: Double { return self * 1_000.0 }
var m: Double { return self }
var cm: Double { return self / 100.0 }
var mm: Double { return self / 1_000.0 }
var ft: Double { return self / 3.28084 }
}
扩展可以添加新的计算属性,但是它们不能添加存储属性,或向现有的属性添加属性观察者。
构造器
扩展可以给现有的类型添加新的构造器,通过扩展提供一个新的构造器,你有责任确保每个通过该构造器创建的实例都是初始化完整的。
方法
扩展可以给现有类型添加新的实例方法和类方法。
可变实例方法
通过扩展添加的实例方法同样也可以修改(或 mutating
(改变))实例本身。结构体和枚举的方法,若是可以修改self
或者它自己的属性,则必须将这个实例方法标记为mutating
,就像是改变了方法的原始实现。
下标
扩展可以给现有的类型添加新的下标。
嵌套类型
扩展可以给现有的类,结构体,还有枚举添加新的嵌套类型。