10月25日(水)3コマ目

今日、やったこと

  • 構造体の練習問題(前回のつづき)
  • クラス(おもにプロパティ)

今日のホワイトボード

構造体の練習問題(前回のつづき)

前回出した構造体の練習問題の正解例をあげておきます。

3-1


3-2


3-3


クラス

基本的にはJavaやC#のクラスと同じと思ってもらえれば。

ただ、機能がいろいろと追加されているので注意。


イニシャライザ

要はコンストラクタ。

ただし、JavaやC#のようにオーバーロード(引数の数、型の違いで複数定義)できない。

その代わりコンビニエンスイニシャライザがある。

いずれにしてもイニシャライザでの処理は以下の順。

①まずはプロパティの初期化

 コンビニエンスイニシャライザの場合は、指定イニシャライザの呼び出し。

 なお、指定イニシャライザは

  self.init(引数)

で呼び出す。

②その他の処理 

 すべてのプロパティが初期化できれば、メソッドを呼び出すことも可。

 逆に、プロパティの初期化が完了していない段階でメソッドを呼び出すとコンパイルエラー。

図 イニシャライザでの処理の順


インスタンスに紐づく、クラスに紐づく

Javaのインスタンスフィールド、クラス変数で話をしました。

Swiftでも

  • インスタンスプロパティはインスタンスに紐づく
  • クラスプロパティ、タイププロパティはクラスに紐づく

とJavaと同じ。

図 インスタンスに紐づく、クラスに紐づく(Javaの場合)


クラスプロパティとタイププロパティの違い

両方ともクラスに紐づく。

タイププロパティは

  • 変数的なストアドプロパティ
  • setter、getterのセットのコンピューテッドプロパティ

の2種類。

クラスプロパティは

 setter、getterのセットのコンピューテッドプロパティ

のみ。


次回は

クラスの継承、練習問題をやってもらいます。

このブログの人気の投稿

11月15日(水)3コマ目

11月1日(水)3コマ目

10月16日(月)3、4コマ目