扩展 Extension
extension 添加方法/计算属性、协议一致性扩展、嵌套类型
扩展 Extension
Extension 给已有的类型(包括系统类型)添加方法、计算属性、协议遵守——不需要访问源码。
学完本章你将: 掌握 extension 添加方法/计算属性、协议一致性。
添加方法
swift
extension Int {
var squared: Int { self * self }
func repeated(_ closure: () -> Void) {
for _ in 0..<self { closure() }
}
}
print(5.squared) // 25
3.repeated { print("Hello") }
// Hello Hello Hello
协议一致性扩展
swift
protocol Greetable {
func greet() -> String
}
struct Person {
let name: String
}
extension Person: Greetable {
func greet() -> String {
"Hello, \(name)!"
}
}
let p = Person(name: "小明")
print(p.greet())
extension vs 子类
swift
// extension:横向扩展、无继承
// 子类:纵向扩展、有继承层级
// Swift 社区倾向:能用 extension 就不用子类
// 标准库大量使用 extension 按功能分组方法
💡 打开 Swift 标准库源码——你会发现类型定义只有核心属性,所有方法都在 extension 中,按协议分组。