10月25日(水)3コマ目
今日、やったこと
- 構造体の練習問題(前回のつづき)
- クラス(おもにプロパティ)
今日のホワイトボード
構造体の練習問題(前回のつづき)
前回出した構造体の練習問題の正解例をあげておきます。
3-1
3-2
3-3
クラス
基本的にはJavaやC#のクラスと同じと思ってもらえれば。
ただ、機能がいろいろと追加されているので注意。
イニシャライザ
要はコンストラクタ。
ただし、JavaやC#のようにオーバーロード(引数の数、型の違いで複数定義)できない。
その代わりコンビニエンスイニシャライザがある。
いずれにしてもイニシャライザでの処理は以下の順。
①まずはプロパティの初期化
コンビニエンスイニシャライザの場合は、指定イニシャライザの呼び出し。
なお、指定イニシャライザは
self.init(引数)
で呼び出す。
②その他の処理
すべてのプロパティが初期化できれば、メソッドを呼び出すことも可。
逆に、プロパティの初期化が完了していない段階でメソッドを呼び出すとコンパイルエラー。
|
| 図 イニシャライザでの処理の順 |
インスタンスに紐づく、クラスに紐づく
Javaのインスタンスフィールド、クラス変数で話をしました。
Swiftでも
- インスタンスプロパティはインスタンスに紐づく
- クラスプロパティ、タイププロパティはクラスに紐づく
とJavaと同じ。
|
| 図 インスタンスに紐づく、クラスに紐づく(Javaの場合) |
クラスプロパティとタイププロパティの違い
両方ともクラスに紐づく。
タイププロパティは
- 変数的なストアドプロパティ
- setter、getterのセットのコンピューテッドプロパティ
の2種類。
クラスプロパティは
setter、getterのセットのコンピューテッドプロパティ
のみ。
次回は
クラスの継承、練習問題をやってもらいます。

