Swift - 扩展
-
简述
可以在扩展的帮助下添加现有类、结构或枚举类型的功能。类型功能可以通过扩展添加,但扩展无法覆盖功能。Swift Extension Functionalities −- 添加计算属性和计算类型属性
- 定义实例和类型方法。
- 提供新的初始化程序。
- 定义下标
- 定义和使用新的嵌套类型
- 使现有类型符合协议
扩展是用关键字“extension”声明的句法
现有的类型也可以通过扩展来使其成为协议标准,其语法类似于类或结构的语法。 -
计算属性
计算的“实例”和“类型”属性也可以在扩展的帮助下进行扩展。当我们使用playground运行上述程序时,我们得到以下结果 - -
初始化程序
Swift 4 提供了通过扩展向现有类型添加新初始化器的灵活性。用户可以添加自己的自定义类型来扩展已经定义的类型,并且还可以使用其他初始化选项。扩展仅支持 init()。扩展不支持 deinit()。当我们使用playground运行上述程序时,我们得到以下结果 - -
方法
新的实例方法和类型方法可以在扩展的帮助下进一步添加到子类中。当我们使用playground运行上述程序时,我们得到以下结果 -topic() 函数接受类型为 '(summation: () → ())' 的参数来表示该函数不接受任何参数并且不会返回任何值。要多次调用该函数,请初始化 for 块并初始化对带有 topic() 的方法的调用。 -
变异实例方法
当声明为扩展时,实例方法也可以改变。修改 self 或其属性的结构和枚举方法必须将实例方法标记为变异,就像从原始实现中变异方法一样。当我们使用playground运行上述程序时,我们得到以下结果 - -
下标
使用扩展也可以向已经声明的实例添加新的下标。当我们使用playground运行上述程序时,我们得到以下结果 - -
嵌套类型
类、结构和枚举实例的嵌套类型也可以在扩展的帮助下进行扩展。当我们使用playground运行上述程序时,我们得到以下结果 -