Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
OrganizationEventAdvent CalendarQiitadon (β)
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Swift の Optional 型の扱い方メモ

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

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

class User {
    var name: String?

? をつけて扱う


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

! をつけて扱う


! は開示指定と呼ぶ。

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

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

user.name ?? "Unknown name"

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

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

guard let name = user.name else {
    // return とか break とか throw とか


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

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

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
Help us understand the problem. What are the problem?