扩展(Extension)
Swift中的扩展,有点类似于OC中的分类(Category)
扩展可以为枚举、结构体、类、协议添加新功能
可以添加方法、计算属性、下标、(便捷)初始化器、嵌套类型、协议等等
扩展不能办到的事情
不能覆盖原有的功能
不能添加存储属性,不能向已有的属性添加属性观察器
不能添加父类
不能添加指定初始化器,不能添加反初始化器
…
计算属性、下标、方法、嵌套类型
extension Double {
var km: Double {
self * 1_000.0 }
var m: Double {
self }
var dm: Double {
self / 10.0 }
var cm: Double {
self / 100.0 }
var mm: Double {
self / 1_000.0 }
}
extension Array {
subscript(nullable idx: Int) -> Element? {
if (startIndex..<endIndex).contains(idx) {
return self[idx]
}
return nil
}
}
extension Int {
func repetitions(task: () -> Void) {
for _ in 0..<self {
task() }
}
mutating func square() -> Int {
self = self * self
return s

本文探讨了Swift中的扩展,它类似OC的分类,用于为枚举、结构体、类和协议添加新功能,如计算属性、下标、方法、嵌套类型等。扩展不能覆盖原有功能,不能添加存储属性或父类。同时,介绍了如何在扩展中自定义初始化器、让类型遵守协议,以及利用扩展实现协议的默认方法。此外,还简要提及了泛型的应用。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



