11月9日(木)1、2コマ目

今日、やったこと

  • プロトコル
  • タプル型

今日のホワイトボード

プロトコル

Javaのインタフェースと同じようなものと思っていただければ。

Javaとは違い、プロトコルを構造体で準拠(実装)可能。

図 プロトコル


エクステンションでプロトコル拡張

エクステンションを使って既存のプロトコルを拡張できる。

プロトコルに実装を追加するイメージ。

図 extensionでプロトコル拡張

ちなみに、エクステンションを使って既存のクラスや構造体にプロトコルを準拠することも可能。(ややこしい)

図 extensionで既存クラス・構造体にプロトコル準拠


練習問題6

プロトコルの練習問題。正解例をあげておきます。

練習問題6-1

プロトコルを作るだけ。


練習問題6-2

お節介とは思いますが、一応。

図 練習問題6-2 ヒント


練習問題6-3

プロトコルを作るだけ。


練習問題6-4

プロトコル拡張。エクステンションを使ってStandardWeightプロトコルに実装を追加。


練習問題6-5

各クラスはStandardWeightプロトコル準拠クラス。よって、これらのクラスのインスタンスはStandardWeightプロトコル型変数で扱うことができる。


タプル型

型が異なる複数のデータをひとまとめにする仕組み。なにげに便利。

たとえば配列中の最大値と最小値を探す関数のような、複数の値を返したい場合、戻り値をタプル型にすればいい。

図 戻り値をタプル型にする=>複数の値を返すことができる


タプル型データを一気に変数に代入する方法もある。

図 タプル型データを一気に変数へ展開


練習問題7

タプル型の練習問題をやってもらいました。正解例をあげておきます。

練習問題7-1


練習問題7-2

nilがふたたび登場。

nilを扱うことができる型はOptional型。宣言時に型名のあとに?をつける。

Optional型はそのままでは扱うことができない。アンラップ処理が必要。


次回は

残りはエラー処理、クロージャー。