swift基础day7---扩展

扩展(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

扩展可以给现有的类型添加新的下标,

上一篇:【笔记】JAVA二分法查找


下一篇:“String.h” 源代码总结