平々凡々エンジニア

平凡で難しい悩みを解決

guard let ってなれたら読みやすいね

guard let とは

僕は最初ifの逆バージョンだと思って使用していたのですがそのような考え方だとめっちゃ読みにくくて考え方おかしいと気がつくまで時間かかりました。
guard はifの逆ではなく文字通りガードしたい条件がきたら処理するという意味のものになります。
guardにletを付け加えることにより宣言しながらエラーやアンラップの条件を記載することで可読性が向上します。

使い方

変数をアンラップしてguardブロック以降のスコープで利用する。

アンラップした変数をスコープ外で利用したい時

guard let url = NSURL(string: coverPath) else { // NSURL.init?(string URLString: String)
    abort()
}

if imageManager.cachedImageExistsForURL(url) { 
    省略...

早期リターンとしての利用

条件を満たしてなかったら即リターン

private func deleteDownloadTask() {
    guard let realm = self.realm() else {
        return
    }

    try! realm.write {
    // realmを使ったなんらかの処理
    }
}

あと他にもありそうですが自分が使用しているのはこんなところで基本的なものだともいます。