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