迅速な構造体
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
类型。三维坐标系内一点,封装
x
,y
和z
属性,三者均为Double
start
属性と length
属性をカプセル化します。どちらも Int
型です。 3 次元座標系の点は、x
、y
、および 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 キーワードを使用します。
この例から、構造体のインスタンスが値によって渡されることがよくわかります。