Swift結構體

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。 結構體成員初始化為整數類型值:mark1mark2mark3。 然後結構體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,它有以下幾個成員:mark1mark2mark3。 現在,成員類的變數被初始化為保存整數值。 然後使用self關鍵字創建結構成員的副本。 當創建了結構成員的副本,結構塊及其參數分數就會傳遞給marks變數,該變數現在將保存學生分數。 然後將分數列印為98,96,100。對於相同結構成員的下一步驟,使用另一個名為fail的實例來指向具有不同分數的相同結構成員。 然後結果列印為34,42,13。這清楚地解釋了結構體將具有成員變數的副本,然後將成員傳遞給它們的功能塊。


上一篇: Swift枚舉 下一篇: Swift類