10月27日(月)2コマ目
今日、やったこと
Optional型をアンラップ
- オプショナルバインディング
- guard
- オプショナルチェイニング
今日のホワイトボード
Optional型
前回のnilを代入できるOptional型 (C#のNull許容型)は、データを取得するには、アンラップする必要がある。
今回は、アンラップのやり方を紹介。
オプショナルバインディング
nilかどうかをチェックし、非nilならアンラップ、nilならアンラップしない。
要は条件分岐。いままでのnullチェックと同じようなモノ。
![]() |
| 図 オプショナルバインディングのイメージ |
ifでオプショナルバインディング
今までのifを使ったnullチェックと同じ。
![]() |
| 図 ifでオプショナルバインディング |
〇非nilのとき
![]() |
| 図 ifでオプショナルバインディング(非nilの場合) |
〇nilのとき
![]() |
| 図 ifでオプショナルバインディング(nilの場合) |
8行目のifの条件式の左辺では、変数nameと同名の定数nameを宣言している。
これは、シャドーイングと呼ばれる仕組みで、if letで定数を宣言すると、同名の変数をこの定数が隠してしまう。
定数nameのスコープはifのブロック内。
guard
オプショナルバインディングはifのほかに、guardでもできる。
guardはifの条件が不成立のときに実行する処理だけを書きたいときに使う。
![]() |
| 図 guard |
guardでオプショナルバインディング
elseのブロックでは、nilの時の処理を書く。
また、guard以降の処理を実行しないために、returnや例外スローで抜け出す必要あり。
非nilの時の処理は、guardのあとに書く。
![]() |
| 図 guardでオプショナルバインディング |
関数の最初に引数チェックをする際に便利。
guardでも、guard letで変数nameを定数nameでシャドーイングをしている。
if letと異なり、定数nameはguardのあとでも使える。便利。
〇非nilの場合
![]() |
| 図 guard letでオプショナルバインディング(非nilの場合) |
〇nilの場合
![]() |
| 図 guardでオプショナルバインディング(nilの場合) |
オプショナルチェイニング
チェイニング=chaining=繋げる。
Optional型変数を、アンラップして、プロパティやメソッド呼び出しを繋げて書く。
C#のNull許容参照型変数のときと同じように、?でアンラップ。
![]() |
| 図 オプショナルチェイニング |
nilのときは、nilを返すため、プロパティやメソッドの戻り値はOptional型になる。
次回は
Optional型変数のアンラップのつづき。








