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は今までの言語になかった仕組みなので、ちょっと注意!!

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型変数のアンラップのつづき。











このブログの人気の投稿

11月25日(火)3、4コマ目

11月17日(月)3 コマ目