知行合一

とか言ってみる

【Swift】Optional型

参考
どこよりも分かりやすいSwiftの"?"と"!" - Qiita
軽くまとめると、

?か!(暗黙的アンラップ型)が付いている変数はオプショナル型。
何も付いていない変数は非オプショナル型。

オプショナル型と非オプショナル型は計算できない。
計算するためにはアンラップする。
変数宣言時の!とアンラップに用いる!は別物。


<アンラップ方法>
◼︎Forced Unwrapping(強制的アンラップ)
!をつける。ただし、アンラップする変数がnilでないことを保証されている必要あり

◼︎Optional Binding(オプショナルバインディング)
if分使ってnilの場合を場合分けして処理する。

var hoge: String?

     if var 変数名 = オプショナル型の変数 {
   //処理
     } else {
          //nilの時の処理 hogeは今nilなのでここが呼ばれる
          print("hogeはnil")
     }

◼︎Optional Chaining
オプショナル型の変数からプロパティを取得したりメソッド呼んだりするする。
「.」で繋いでみたいな話。

ただし、返される値は全てオプショナル型。
なぜなら、変数がnilだった場合はnilが返されるから。

◼︎変数に!が付いてるのは何?

var hoge: String!

みたいな。
これはhogeを使う時に必ず自動でアンラップしてくれる。
暗黙的アンラップ型。
Forced Unwrappingと同じでnilではないことが保証されてる必要あり。
最初はnilで宣言したいが使う時はnilではない時に使う(使用例思いついたら書く...)