Swift 4提供了一個靈活的構建塊,它使用構造作為結構體。 通過利用這些結構,可以定義構造方法和屬性。
與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
關鍵字初始化。
struct studentMarks {
var mark1 = 100
var mark2 = 200
var mark3 = 300
}
let marks = studentMarks()
print("Mark1 is \(marks.mark1)")
print("Mark2 is \(marks.mark2)")
print("Mark3 is \(marks.mark3)")
當playground執行上述程式時,得到以下結果 -
Mark1 is 100
Mark2 is 200
Mark3 is 300
學生分數的結構體名稱為:studentMarks
。 結構體成員初始化為整數型別值:mark1
,mark2
,mark3
。 然後結構體studentMarks()
通過let
關鍵字傳遞給marks
變數。 此後marks
變數包含結構體成員值。可通過初始化的名稱和.
操作符存取結構體成員值並列印。
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
當playground執行上述程式時,得到以下結果 -
98
97
Swift 4語言提供了將結構體定義為用於構建功能塊的自定義資料型別的功能。 結構體的範例通過其值傳遞給定義的塊以進行進一步操作。
需要使用結構體來 -
Swift 4中的結構體是傳遞成員的值而不是參照值。範例程式碼 -
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
}
}
var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
print(marks.mark1)
print(marks.mark2)
print(marks.mark3)
當playground執行上述程式時,得到以下結果 -
98
96
100
另一個範例
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
}
}
var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)
print(fail.mark1)
print(fail.mark2)
print(fail.mark3)
當playground執行上述程式時,得到以下結果 -
34
42
13
首先定義結構體markStruct
,它有以下幾個成員:mark1
,mark2
和mark3
。 現在,成員類的變數被初始化為儲存整數值。 然後使用self
關鍵字建立結構成員的副本。 當建立了結構成員的副本,結構塊及其引數分數就會傳遞給marks
變數,該變數現在將儲存學生分數。 然後將分數列印為98
,96
,100
。對於相同結構成員的下一步驟,使用另一個名為fail
的範例來指向具有不同分數的相同結構成員。 然後結果列印為34
,42
,13
。這清楚地解釋了結構體將具有成員變數的副本,然後將成員傳遞給它們的功能塊。