扩展(extension)
扩展可以给一个类型添加新的功能,但是不能重写已经存在的功能。扩展可以实现:
- 添加计算型实例属性和计算型类属性
- 定义实例方法和类方法 提供新的构造器
- 定义下标
- 定义和使用新的嵌套类型
- 使已经存在的类型遵循一个协议
对一个现有的类型,如果你定义了一个扩展来添加新的功能,那么这个类型的所有实例都可以使用这个新功能,包括那些在扩展定义之前就存在的实例。
计算型属性扩展:
扩展可以添加新的计算属性,但是它们不能添加存储属性,或向现有的属性添加属性观察者。
构造器扩展
扩展可以给一个类添加新的便利构造器,但是它们不能给类添加新的指定构造器或者析构器。指定构造器和析构器必须始终由类的原始实现提供。
方法扩展:
extension Int {
func repetitions(task: () -> Void){
for _ in 0..<self {
task()
}
}
}
2.repetitions {
print("Hello!")
}
// Hello!
// Hello!
通过扩展添加的实例方法同样也可以修改实例本身。结构体和枚举的方法,若是可以修改 self 或者它自己的属性,则必须将这个实例方法标记为 mutating,就像是改变了方法的原始实现。
可变实例方法扩展
extension Int{
mutating func square(){
self = self * self
}
}
var someInt = 3
someInt.square() //9
扩展可以给现有的类型添加新的下标,
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。