位置:首页 > 高级语言 > Swift在线教程 > Swift 扩展

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 =