Swift-structures

提供:Dev Guides
移動先:案内検索

Swift-構造

Swift 4は、構造体を構造体として使用する柔軟なビルディングブロックを提供します。 これらの構造を利用することにより、コンストラクトのメソッドとプロパティを一度定義できます。

CやObjective Cとは異なり

  • 構造は、実装ファイルとインターフェイスを必要としません。
  • 構造により、単一のファイルを作成し、そのインターフェイスを他のブロックに自動的に拡張できます。

構造では、値を変更できないように、古い値のコピーを返すことにより、変数値がコピーされ、後続のコードで渡されます。

構文

Structures are defined with a 'Struct' Keyword.
struct nameStruct {
   Definition 1
   Definition 2
   ---
   Definition N
}

構造の定義

たとえば、3つの科目のマークを含む学生レコードにアクセスし、3つの科目の合計を調べる必要があるとします。 ここでは、markStructを使用して、データ型「Int」として3つのマークを持つ構造を初期化します。

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)")

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

Mark1 is 100
Mark2 is 200
Mark3 is 300

学生マークには、構造名「studentMarks」でアクセスします。 構造体のメンバーは、整数型の値でmark1、mark2、mark3として初期化されます。 次に、studentMarks()構造が「let」キーワードとともに「marks」に渡されます。 これ以降、「マーク」には構造体のメンバー値が含まれます。 これで、構造メンバーの値に「。」でアクセスして値が出力されます。初期化された名前。

struct MarksStruct {
   var mark: Int

   init(mark: Int) {
      self.mark = mark
   }
}

var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct    //aStruct and bStruct are two structs with the same value!
bStruct.mark = 97

print(aStruct.mark)     //98
print(bStruct.mark)     //97

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

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)

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

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)

プレイグラウンドを使用して上記のプログラムを実行すると、次の結果が得られます-

34
42
13

構造 'markStruct’は、メンバーmark1、mark2、およびmark3で最初に定義されます。 メンバークラスの変数は、整数値を保持するように初期化されました。 次に、「self」キーワードを使用して構造メンバーのコピーが作成されます。 構造体メンバーのコピーが作成されると、パラメーターマークを持つ構造体ブロックが「marks」変数に渡され、生徒のマークが保持されます。 その後、マークは98、96、100として印刷されます。 同じ構造体メンバーの次の手順では、「fail」という名前の別のインスタンスを使用して、同じ構造体メンバーに異なるマークを付けます。 次に、結果は34、42、13として印刷されます。 これは、構造体がメンバー変数のコピーを持ち、メンバーを今後の機能ブロックに渡すことを明確に説明しています。