公開中!!#iOS#Swiftよこやまゆうだい2014.09.18この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。クラスとストラクチャの違いクラスにはなじみがあると思いますが、ストラクチャはあまり聞き慣れない言葉かと思います。クラスとストラクチャの大きな違いは、クラスは参照型でストラクチャは値型だということです。クラスはそのオブジェクトのやりとりを参照ポインタで行いますが、ストラクチャはその都度値がコピーされます。ストラクチャはクラスのように継承等は出来ませんが、値を定義したいときに活用できる便利なタイプです。クラスとストラクチャはそれぞれ次のように定義します。{}一見すると名前が異なるだけのような印象を受けると思いますが、先述した通りインスタンス化した時にクラスは参照がわたされ、ストラクチャはコピーが渡される点で大きく違います。その他、共通の機能とクラスのみ提供される機能については次の通りです。10プロパティプロパティはクラス、ストラクチャ共にvarまたはletを使って宣言することができます。プロパティを宣言時に初期化しない場合は後述するイニシャライザで必ず初期化する必要があります。Javaでクラスを作るときのメンバ変数と同じイメージです。クラスがインスタンス化されるときまでにプロパティは必ず明示的に初期化されなければなりません。この点がJavaのメンバ変数とは大きく異なることに注意してください。イニシャライザイニシャライザはinit()で定義します。[8-11行目]イニシャライザは明示的な定義の有無に関わらず自動的に引数をもたないデフォルトイニシャライザが生成されます。ストラクチャに関しては明示的にイニシャライザを定義しない場合にはデフォルトイニシャライザと全てのプロパティを引数にとるイニシャライザが自動で生成されます。そのため、[26行目]のようにサンプルコードではストラクチャRectをインスタンス化する際にイニシャライザを定義していないのにも関わらず、引数の入力が必須になります。紛らわしいかもしれませんが、イニシャライザはJavaクラスのコンストラクタと似たようなものであるという認識でまずは問題ないと思います。クラスの継承SwiftはJavaと同様に多重継承をサポートしていません。継承の仕方はとても簡単でJavaでextendsと記述してスーパークラスを指定していたところを:に置き換えるだけです。......}ここではメソッド自体の解説はしませんが、考え方は同じでスーパークラスのメソッドをオーバーライドする場合はoverride属性の指定が必須となります。まとめクラスとストラクチャについての概要を紹介しました。クラスについては抵抗無く受け入れられると思いますが、ストラクチャはどうでしょうか?すぐによい活用シーンがイメージできなくても、きっと役に立つ便利機能であることは間違いないでしょう。その時まで頭の片隅に記憶しておくといいかもしれません。おわりにここまで5回に渡り、Android脳に効く!新言語「Swift」超入門と題して新言語Swiftの概要を紹介してきました。これまでAndroid開発専門でJavaでの開発経験しかないような場合でもSwiftはJavaとの共通点も多く非常に読みやすく抵抗なく理解できると思います。新言語Swift、これからのiOS開発の入門の入門としてお役に立てれば幸いです。@StateObject。