if let について
if letとは
if let とは「nilチェックとアンラップ処理をやってくれる便利な仕組み」です。
使用するメリットとしては、以下になります。
・アンラップを行なってくれる
・同時にnilチェックをしてくれる
・毎回「!」でアンラップする必要がない
以下、if let参考例。
if let apple = a {
// aがnilで無い場合の処理
print(apple)
} else {
// aがnilの場合の処理
}
上記コードがやっていることとしては以下のようなイメージ。
if a != nil {
let apple = a!
print(apple)
} else {
// aがnilの場合の処理
}
自分メモ
・「if let」は、appleに「ヌルじゃないa」を代入する
・if文なので「ヌルじゃないなら〜」「ヌルなら〜」とチェックできる
guard let
「if let」と同じくnilチェックする方法で「guard let」というやり方もある。
「guard let」はnilだったらのエラーとして扱うケースに使える
以下、guard let参考例。
let hoge: String? = nil //`hoge`の中身は`nil`
guard let fuga = hoge else { return } //`hoge`は`nil`なのでreturnされる
//`hoge`が`nil`ではなかった時の後続処理…
参考サイト
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9U3dpZnQlRTMlODElQUVpZiUyMGxldCUyMCVFMyU4MSVBMyVFMyU4MSVBNiVFMyU4MCU4MSVFMyU4MSVBNCVFMyU4MSVCRSVFMyU4MiU4QSVFMyU4MCU4MSVFNCVCRCU5NSVFRiVCQyU5RiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YTRlY2RhODhhYjdhYjBlOTA5NjEyZjUyZTg5ZDg3ZmM&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwSW9yaW4wMjI1JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0zYzU5MzA4N2ZlYzg3ODEzNDA0YWZlZjlmNjc0MjEzNg&blend-x=142&blend-y=491&blend-mode=normal&s=6df32883e63fcacf75816386b2ed9e75)
Swiftのif let って、つまり、何? - Qiita
前書きObjective-CからSwiftいじりはじめて、Xcodeちゃんの補完で「なんじゃこりゃ!?」」って思った。調べると色々出たけど、「つまり何よ?」ってのをパッと答えてくれるページが見つ…
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9Z3VhcmQlMjBsZXQlRTMlODElQThpZiUyMGxldCVFMyU4MSVBRSVFNCVCRCVCRiVFMyU4MSU4NCVFNSU4OCU4NiVFMyU4MSU5MSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MjliOTIzOTU0NjA0ZWVlNTEzZGVmMGIzMGZlNWEwNDc&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwc29sdHlfOTE5JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1mYzQ4NTdiMzNlMzFhNzcxZGY5ZDdjNjkwZTk4OGQ2Yg&blend-x=142&blend-y=491&blend-mode=normal&s=faa8d1073a0634ab661f04c7402d39cf)
guard letとif letの使い分け - Qiita
guard letこれ以上処理を進めたくない場合に使用します。nilが入っていたらエラーとして扱うケースだった場合などによく使います。let hoge: String? = nil //`ho…
コメント