Help us understand the problem. What is going on with this article?

Swift の Optional 型の扱い方メモ

More than 1 year has passed since last update.

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 便利

negito6
今はこの会社で、水産養殖 IoT の仕事してます。 https://umitron.com/ja/ 編集リクエスト、コメント大歓迎です。よろしくお願いします
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away