Edited at

Swift の Optional 型の扱い方メモ

Swift のオプショナル型について、自分なりにまとめました。

サンプルコードでは、下記のようなクラス定義のインスタンス user を使った例を記しています。 Swift4 で試しているはずです。

class User {

var name: String?
}


? をつけて扱う

user.name?.count

これだと count も Int? になるので、その後も延々と Optional として扱う必要がある


! をつけて扱う

user.name!

! は開示指定と呼ぶ。

万が一 name にデータが入っていないい時は実行時エラーが出る覚悟の時。


?? でデフォルトの値を指定してあつかう

user.name ?? "Unknown name"

?? は nil 合体演算子と呼ぶ。


if / while / guard 文で Optional じゃない変数に入れて扱う

guard let name = user.name else {

// return とか break とか throw とか
}

name.count

if と while では、そのスコープ内で変数を利用できる。オプショナル束縛と呼ぶ。

guard 文では、後続の文でも変数を利用できる。kotlin の let も嫌いじゃないけど、顧客の求めていたもの感はこの guard 文のほうが大きい。 guard 便利