Swift-構造

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

CやObjectiveCとは異なり

  • 構造には、実装ファイルやインターフェースは必要ありません。

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

Structureでは、変数値がコピーされ、古い値のコピーを返すことで後続のコードに渡されるため、値を変更することはできません。

構文

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として出力されます。これは、構造体にメンバー変数のコピーがあり、メンバーを次のファンクションブロックに渡すことを明確に説明しています。