Swift 扩展
封面图
•
2025-10-24
•
Swift
6
0
0
0
在 **Swift** 中,**扩展(Extension)** 是一种为已有类型(如类、结构体、枚举、协议等)添加新功能的方式,而无需修改原始类型的定义。扩展可以用来: - 添加计算属性 - 添加实例方法和类型方法 - 添加初始化器 - 定义子脚本(subscripts) - 提供新的协议一致性 --- ## ✅ 基本语法 ```swift extension SomeType { // 新增的功能 } ``` --- ## 🧩 示例:为 `Int` 类型添加一个方法 ```swift extension Int { func squared() -> Int { return self * self } } let number = 5 print(number.squared()) // 输出 25 ``` --- ## 📦 扩展结构体 ```swift struct Point { var x: Double var y: Double } extension Point { func description() -> String { return "Point(\(x), \(y))" } } let p = Point(x: 3.0, y: 4.0) print(p.description()) // 输出 "Point(3.0, 4.0)" ``` --- ## 🔁 扩展枚举 ```swift enum Weekday { case monday, tuesday, wednesday, thursday, friday, saturday, sunday } extension Weekday { func isWeekend() -> Bool { switch self { case .saturday, .sunday: return true default: return false } } } let day = Weekday.saturday print(day.isWeekend()) // 输出 true ``` --- ## 🔄 扩展协议 ```swift protocol Greeting { func greet() } extension Greeting { func greet() { print("Hello!") } } struct Person: Greeting { // 没有实现 greet 方法,会使用扩展中的默认实现 } let person = Person() person.greet() // 输出 "Hello!" ``` --- ## 🎯 扩展中可以添加的特性 | 功能 | 是否支持 | |------|----------| | 计算属性 | ✅ | | 实例方法 | ✅ | | 类型方法 | ✅ | | 初始化器 | ✅(只能是 `init()`) | | 子脚本 | ✅ | | 协议一致性 | ✅ | --- ## ⚠️ 注意事项 - 扩展不能添加存储属性(除非是通过扩展的 `lazy` 属性)。 - 扩展不能覆盖已有的方法或属性。 - 如果你想要给一个类添加存储属性,必须通过子类化或者使用 `@objc` 属性。 --- ## 🧾 小结 | 内容 | 说明 | |------|------| | 扩展 | 为已有类型添加新功能,不修改原代码 | | 语法 | `extension Type { ... }` | | 可扩展类型 | 类、结构体、枚举、协议 | | 用途 | 增强现有类型、提供默认实现、简化代码 | --- 如果你有具体的扩展需求(比如为某个特定类型扩展方法或属性),欢迎告诉我,我可以帮你写出具体示例 😊
上一篇:
Swift 自动引用计数
下一篇:
Swift 协议
标题录入,一次不能超过6条
返回顶部
留言
留言
评论