Swift 扩展
现有的类,结构或枚举类型的功能可以在扩展的帮助下加入。类型的功能可以使用扩展加入,但重写的功能不能使用扩展。
Swift 扩展功能:
-
添加计算属性并计算类型属性
-
定义实例和类型的方法
-
提供了新的初始化
-
定义下标
-
定义和使用新的嵌套类型
-
使现有类型符合协议
扩展用关键字 extension 声明
语法
extension SomeType { // new functionality can be added here }
现有类型也可以用扩展加入使它作为一个协议标准和其语法类似于类或结构。
extension SomeType: SomeProtocol, AnotherProtocol { // protocol requirements is described here }
计算属性
计算“实例”和“type”属性也可以扩展在扩展的帮助下实现。
extension Int { var add: Int {return self + 100 } var sub: Int { return self - 10 } var mul: Int { return self * 10 } var div: Int { return self / 5 } } let addition = 3.add println("Addition is \(addition)") let subtraction = 120.sub println("Subtraction is \(subtraction)") let multiplication = 39.mul println("Multiplication is \(multiplication)") let division = 55.div println("Division is \(division)") let mix = 30.add + 34.sub println("Mixed Type is \(mix)")
当我们使用 playground 运行上面的程序,得到以下结果。
Addition is 103 Subtraction is 110 Multiplication is 390 Division is 11 Mixed Type is 154
初始化器
Swift 能够灵活地通过扩展新的初始化添加到现有的类型。用户可以添加自己的自定义类型来扩展已定义的类型,额外的初始化选项也是可以的。 扩展仅支持 init(). 而 deinit() 不被扩展支持。
struct sum { var num1 = 100, num2 =