詳解Swift 結構體
Swift 結構體是構建程式碼所用的一種通用且靈活的構造體。
我們可以為結構體定義屬性(常量、變數)和新增方法,從而擴充套件結構體的功能。
與 C 和 Objective C 不同的是:
- 結構體不需要包含實現檔案和介面。
- 結構體允許我們建立一個單一檔案,且系統會自動生成面向其它程式碼的外部介面。
結構體總是通過被複制的方式在程式碼中傳遞,因此它的值是不可修改的。
語法
我們通過關鍵字 struct 來定義結構體:
struct nameStruct { Definition 1 Definition 2 …… Definition N }
例項
我們定義一個名為 MarkStruct 的結構體 ,結構體的屬性為學生三個科目的分數,資料型別為 Int:
struct MarkStruct{ var mark1: Int var mark2: Int var mark3: Int }
我們可以通過結構體名來訪問結構體成員。
結構體例項化使用 let 關鍵字:
import Cocoa struct studentMarks { var mark1 = 100 var mark2 = 78 var mark3 = 98 } let marks = studentMarks() print("Mark1 是 \(marks.mark1)") print("Mark2 是 \(marks.mark2)") print("Mark3 是 \(marks.mark3)")
以上程式執行輸出結果為:
Mark1 是 100
Mark2 是 78
Mark3 是 98
例項中,我們通過結構體名 'studentMarks' 訪問學生的成績。結構體成員初始化為mark1,mark2,mark3,資料型別為整型。
然後我們通過使用 let 關鍵字將結構體 studentMarks() 例項化並傳遞給 marks。
最後我們就通過 . 號來訪問結構體成員的值。
以下例項化通過結構體例項化時傳值並克隆一個結構體:
import Cocoa struct MarksStruct { var mark: Int init(mark: Int) { self.mark = mark } } var aStruct = MarksStruct(mark: 98) var bStruct = aStruct // aStruct 和 bStruct 是使用相同值的結構體! bStruct.mark = 97 print(aStruct.mark) // 98 print(bStruct.mark) // 97
以上程式執行輸出結果為:
98
97
結構體應用
在你的程式碼中,你可以使用結構體來定義你的自定義資料型別。
結構體例項總是通過值傳遞來定義你的自定義資料型別。
按照通用的準則,當符合一條或多條以下條件時,請考慮構建結構體:
- 結構體的主要目的是用來封裝少量相關簡單資料值。
- 有理由預計一個結構體例項在賦值或傳遞時,封裝的資料將會被拷貝而不是被引用。
- 任何在結構體中儲存的值型別屬性,也將會被拷貝,而不是被引用。
- 結構體不需要去繼承另一個已存在型別的屬性或者行為。
舉例來說,以下情境中適合使用結構體:
- 幾何形狀的大小,封裝一個width屬性和height屬性,兩者均為Double型別。
- 一定範圍內的路徑,封裝一個start屬性和length屬性,兩者均為Int型別。
- 三維座標系內一點,封裝x,y和z屬性,三者均為Double型別。
結構體例項是通過值傳遞而不是通過引用傳遞。
import Cocoa struct markStruct{ var mark1: Int var mark2: Int var mark3: Int init(mark1: Int,mark2: Int,mark3: Int){ self.mark1 = mark1 self.mark2 = mark2 self.mark3 = mark3 } } print("優異成績:") var marks = markStruct(mark1: 98,mark2: 96,mark3:100) print(marks.mark1) print(marks.mark2) print(marks.mark3) print("糟糕成績:") var fail = markStruct(mark1: 34,mark2: 42,mark3: 13) print(fail.mark1) print(fail.mark2) print(fail.mark3)
以上程式執行輸出結果為:
優異成績:
98
96
100
糟糕成績:
34
42
13
以上例項中我們定義了結構體 markStruct,三個成員屬性:mark1,mark2 和 mark3。結構體內使用成員屬性使用 self 關鍵字。
從例項中我們可以很好的理解到結構體例項是通過值傳遞的。
以上就是詳解Swift 結構體的詳細內容,更多關於Swift 結構體的資料請關注我們其它相關文章!