迅速な構造体


Swift 構造体は、コードを構築するための多用途で柔軟な構造です。

プロパティ (定数、変数) を定義し、構造体にメソッドを追加して、構造体の機能を拡張できます。

C や Objective C との違い:

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

  • 構造により、単一のファイルを作成することができ、システムは他のコードへの外部インターフェイスを自動的に生成します。

構造体は常にコピーされてコードに渡されるため、その値は変更できません。

構文

キーワードstruct:

struct nameStruct { 
   Definition 1
   Definition 2
   ……
   Definition N
}

MarkStructという名前の構造を定義します。構造の属性は3つの科目の生徒のスコアであり、データ型は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 として初期化され、データ型は整数です。

次に、構造 StudentMarks() をインスタンス化し、let キーワードを使用してそれをマークに渡します。

最後に、. 番号を通じて構造体のメンバーの値にアクセスします。

次のインスタンス化は、構造体をインスタンス化するときに値を渡し、構造体のクローンを作成します:

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

構造体アプリケーション

コードでは、構造体を使用して以下を実行できます。カスタム データ型を定義します。

構造インスタンスは、カスタム データ型を定義するために常に値によって渡されます。

一般的なガイドラインに従って、次の条件が 1 つ以上満たされる場合は、構造の構築を検討してください:

  • 構造の主な目的は、少数の関連する単純なデータ値をカプセル化することです。

  • 構造体インスタンスが割り当てられるか渡されるときに、カプセル化されたデータが参照されるのではなくコピーされることが期待される理由があります。

  • 構造体に格納されている値型の属性も、参照される代わりにコピーされます。

  • 構造体は、別の既存の型のプロパティや動作を継承する必要はありません。

たとえば、構造は次の状況での使用に適しています:

  • 幾何学的形状のサイズは、width 属性と height 属性をカプセル化します。どちらも Double 型です。 width属性和height属性,两者均为Double类型。

  • 一定范围内的路径,封装一个start属性和length属性,两者均为Int类型。

  • 三维坐标系内一点,封装xyz属性,三者均为Double

特定の範囲内のパスは、start 属性と length 属性をカプセル化します。どちらも Int 型です。

3 次元座標系の点は、xy、および z 属性をカプセル化し、3 つすべてが 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

上記の例では、mark1、mark2、mark3 という 3 つのメンバー属性を持つ構造体 markStruct を定義しました。構造体内でメンバー プロパティを使用する場合は、self キーワードを使用します。

この例から、構造体のインスタンスが値によって渡されることがよくわかります。