在 Swift 中,結構體(Structures)是一種用來封裝一組相關的數據和功能的數據類型。結構體是一種值類型,它在傳遞和賦值時會被復制,與類(Class)不同,類是引用類型,它在傳遞和賦值時是共享同一份數據。
以下是 Swift 中結構體的基本知識點和用法:
1. 定義結構體
使用 struct
關鍵字來定義結構體。例如,定義一個表示二維坐標的結構體:
struct Point {var x: Intvar y: Int
}
2. 屬性和方法
結構體可以包含屬性和方法,用來描述和操作結構體的實例。例如,給上面的 Point
結構體添加一個計算與另一個點的距離的方法:
struct Point {var x: Intvar y: Intfunc distance(to other: Point) -> Double {let deltaX = Double(x - other.x)let deltaY = Double(y - other.y)return (deltaX * deltaX + deltaY * deltaY).squareRoot()}
}
let point1 = Point(x: 1, y: 1)
let point2 = Point(x: 4, y: 5)
print(point1.distance(to: point2)) // 輸出:5.0
3. 可變性
如果需要在方法中修改結構體的屬性,可以在方法前加上 mutating
關鍵字。例如,給 Point
結構體添加一個移動方法:
struct Point {var x: Intvar y: Intmutating func moveBy(x deltaX: Int, y deltaY: Int) {x += deltaXy += deltaY}
}
var point = Point(x: 3, y: 3)
point.moveBy(x: 2, y: 2)
print(point) // 輸出:Point(x: 5, y: 5)
4. 初始化方法
結構體可以定義初始化方法來設置初始值。例如,給 Point
結構體添加一個帶默認值的初始化方法:
struct Point {var x: Intvar y: Intinit(x: Int = 0, y: Int = 0) {self.x = xself.y = y}
}
let origin = Point() // 使用默認值初始化
let point = Point(x: 3, y: 3) // 使用指定值初始化
結構體在 Swift 中被廣泛應用于定義輕量級的數據類型,例如坐標、尺寸、顏色等。結構體的值類型特性使得它們適合用于簡單的數據封裝和傳遞,以及在函數式編程和并發編程中提供更好的安全性。