くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

Swiftのif letについて

少し間が空いてしまいました・・・・orz

これからは小まめに記事投稿していきますので、よろしくお願いします!!

今回はSwiftのif let という書き方についてです

最近、本格的にSwiftを使い始めたのですが、違和感のある書き方でしたので調べてみました

if letについて

if letは変数の中身がnilかどうかを判定し、nilでなければ処理を行います

var age: Int?
age = 24

if let ageTest = age {
    print(ageTest)
}

上記サンプルではageが24のためageTestnilではないので、24が表示されます(ageTestはif文の中で使う変数だと思っていてください)

var age: Int?

if let ageTest = age {
    print(ageTest)
}

この場合は、agenilのため処理は行われません。

こうするとnilでアプリが落ちるのを防ぐことができます

guard letについて

if letとは別にguard letというものがあります。どんな違いがあるのでしょう

guard letの場合は、条件を満たさない場合にreturnbreakthrowなど、スコープを抜けるコードがないとエラーになるという違いがあります

var age: Int?

guard let ageTest = age else {
    // nilの場合の処理
    return
}

nilの時にこれ以上処理を進めたくない場合はguard letを使用します

こうすることで、想定外の値で処理を続行してしまうというミスがなくなります。

一般的にはnilの場合に、別の処理を行うというのはあまりよくない処理だと思うので、guard letの方が使う気がします。

場合によって、if letguard letをうまく使い分けることでExceptionを発生させないようにできると思います

参照

Swiftでif let文を使って出来ることとguard letの使い分けに関して