LoginSignup
69
49

More than 5 years have passed since last update.

Swiftのif let って、つまり、何?

Posted at

前書き

Objective-CからSwiftいじりはじめて、Xcodeちゃんの補完で「なんじゃこりゃ!?」」って思った。

調べると色々出たけど、「つまり何よ?」ってのをパッと答えてくれるページが見つからなかったので書く。雰囲気だけ掴んで行間は自分で補完できる人のために。

つまり、何よ?

// fruitはnil許容型のオブジェクトとする
if let apple = fruit {
    apple.juice()
} else {
    print("There is no fruit...")
}

とは、つまり、

// fruitはnil許容型のオブジェクトとする
if fruit != nil {
    let apple = fruit!
    apple.juice()
} else {
    print("There is no fruit...")
}

ってことです。

以下は補足なので、上記を見て「あ、なーるほど」って思える方はここまででOKです。

なんでif letとかあるの?

Swiftには二種類の型があります。

  • nilを許容しない型(非Optional型)
  • nilを許容する型(Optional型)

そして多くの「nilを許容する型」では、その変数を処理する前に、「nilを許容しない型」に変換してあげる必要があります。

型に対して「nilを許容する」というコーティングを施したままだと使えないので、使う前にコーティングを剥がしてあげましょう、と。(これをUnwrapと呼びます。)

上記コードのlet apple = fruit!がまさしくコーティングを剥がす作業をしている部分です。

で、毎度毎度nilチェックした後にコーティング剥がす1行を入れるのなんて面倒ですし、どこかで!をつけ忘れてエラーが発生する、みたいなオチが見えますよね?

そういうのを防ぐために、if letがあるんですね。

あとがき

Optionalに関しては雰囲気を掴むための説明なので、詳しくは下記が詳しいです。
どこよりも分かりやすいSwiftの"?"と"!" - Qiita

ただ、「Optional」とか「Unwrap」とかそこらへんの単語が先に出てきて、せっかちな私は「・・・つまり?」って思っちゃうので、せっかちさん用の説明です。はい。

なんか間違っていたら是非ご指摘頂ければと存じます。

69
49
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
69
49