スウィフト構造
スウィフト構造が一般的で柔軟な構造を構築するために使用するコードです。
我々は、構造(定数、変数)のプロパティを定義し、機能構成を拡張するためにメソッドを追加することができます。
CとObjective Cは異なります。
構造は、実装ファイルおよびインタフェースを含む必要はありません。
構造は、私たちは1つのファイルを作成することができ、システムが自動的に他の外部インターフェイス用のコードを生成します。
構造は、常にコードで転送の方法によって複製されるので、その値を変更することはできません。
文法
我々は、キーワードの構造体を介して構造を定義します。
struct nameStruct { Definition 1 Definition 2 …… Definition N }
例
学生は3科目、intデータ型をスコアリングするために私たちはMarkStructと呼ばれる構造、特性の構造を定義します。
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、データ型の整数値に初期化されます。
私たちは、その後(のletキーワード構造studentMarksを使用)マークにインスタンス化され、渡されます。
最後に、我々は、構造体のメンバにアクセスするには、値の数を可決しました。
伝統的な価値観や構造のクローニングは、構造体の以下の実施例によりインスタンス化されます:
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
適用構造
あなたのコードでは、カスタムデータ型の構造を定義することができます。
構造としては、常に値によって渡されたカスタムデータ型を定義することです。
以下の基準の一つ以上の遵守は、建物の構造を考慮し原則に従って。
- 構造の主な目的は、単純な値に関連するデータの少量をカプセル化するために使用されます。
- 構造インスタンスの割り当てまたは転送ことを期待するのが妥当、カプセル化されたデータが参照されていない、コピーされます。
- 構造体に格納されたプロパティ値の任意のタイプは、それが参照されていない、コピーされます。
- 構造は、プロパティを継承する必要はありませんや動作の他のタイプはすでに存在しています。
例えば、構造体の使用について、以下の状況:
- 幾何学的な大きさや形状、パッケージの
width
プロパティとheight
プロパティ、あるどちらもDouble
タイプ。 - 一定の範囲内のパスは、パッケージが
start
特性とlength
であり、どちらも、プロパティをInt
型。 - 三次元パッケージシステム座標
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:上記の例では、我々は、構造markStruct、プロパティの3メンバーを定義します。 メンバプロパティを使用して、in vivoでの構造は、自己のキーワードを使用します。
例から、我々はよく構造インスタンスが値によって渡されます理解することができます。