Swift 结构体
封面图
•
2025-10-22
•
Swift
0
0
0
0
在 **Swift** 中,**结构体(Struct)** 是一种用户定义的类型,用于将相关的数据组合在一起。它与类(`class`)类似,但有一些关键的区别,特别是在内存管理和行为方面。 --- ## ✅ 1. 基本语法 ```swift struct 结构体名称 { // 属性(Properties) var 属性名: 类型 let 只读属性名: 类型 // 方法(Methods) func 方法名() { // 方法体 } // 计算属性(Computed Property) var 计算属性名: 类型 { get { return 值 } set { // 设置新值 } } } ``` --- ## ✅ 2. 示例:一个简单的结构体 ```swift struct Person { var name: String var age: Int func greet() { print("Hello, my name is $name) and I'm $age) years old.") } } let person = Person(name: "Alice", age: 30) person.greet() // 输出: Hello, my name is Alice and I'm 30 years old. ``` --- ## ✅ 3. 结构体 vs 类(Class)的区别 | 特性 | 结构体(Struct) | 类(Class) | |------|------------------|-------------| | 内存管理 | 值类型(Value Type) | 引用类型(Reference Type) | | 赋值时 | 创建副本 | 共享引用 | | 是否可以继承 | 不支持 | 支持 | | 是否可以有析构函数 | 不支持 | 支持 | | 性能 | 通常更快(尤其在小数据量) | 稍慢(因为需要管理引用计数) | --- ## ✅ 4. 结构体的默认初始化器 Swift 会为结构体自动生成一个默认的初始化器,只要所有属性都有默认值或可以通过参数设置。 ```swift struct Point { var x: Double var y: Double } let p = Point(x: 1.0, y: 2.0) ``` --- ## ✅ 5. 自定义初始化器 你可以为结构体提供自定义的初始化器: ```swift struct Rectangle { var width: Double var height: Double init(width: Double, height: Double) { self.width = width self.height = height } func area() -> Double { return width * height } } let rect = Rectangle(width: 5.0, height: 10.0) print(rect.area()) // 输出: 50.0 ``` --- ## ✅ 6. 计算属性(Computed Property) ```swift struct Circle { var radius: Double var diameter: Double { return radius * 2 } var circumference: Double { return 2 * .pi * radius } } let circle = Circle(radius: 5.0) print(circle.diameter) // 输出: 10.0 print(circle.circumference) // 输出: 31.4159... ``` --- ## ✅ 7. mutating 方法(修改结构体属性) 由于结构体是值类型,如果你要在方法中修改它的属性,必须使用 `mutating` 关键字: ```swift struct Counter { var count = 0 mutating func increment() { count += 1 } } var counter = Counter() counter.increment() print(counter.count) // 输出: 1 ``` --- ## ✅ 8. 结构体和可选类型 结构体也可以包含可选属性: ```swift struct User { var name: String? var age: Int? } let user = User(name: nil, age: 25) ``` --- ## ✅ 9. 使用结构体的好处 - **安全性**:值类型避免了意外的副作用。 - **性能**:在处理小数据时更高效。 - **简洁性**:适合封装简单数据模型。 --- 如果你想了解 Swift 中结构体与类的更多对比、协议扩展、泛型等高级内容,也可以告诉我!
上一篇:
Swift 枚举
下一篇:
Swift 方法
标题录入,一次不能超过6条
返回顶部
留言
留言
评论