半空洞男女関係

思ったこととかプログラミングしてるときのメモとか色々かいてます。メールはidそのままgmail

Swiftのguardのわかり方

久々にコードに触れるようになってきて、Swiftを読み書きしている。Swiftの guard は次のような感じで使うことが多いと思う。

guard let foo = item.foo else { return }

そのイメージだと、 何かを否定する条件だった場合に結構頭がこんがらがる。

guard !canceled else { return } // これはどっち?

これは、以下のコードと意味的には一緒になる。今までは以下のコードの方がわかりやすくて好みだった。

if canceled { return }

よくよく考えてみると、 guard は条件のところに前提条件を記載するようになっている。すなわち、「これは前提条件だ。保てないなら、elseの先へ」という感じ。こう捉えると、guardも読みやすくなった。

guard !canceled else { return } // キャンセルされてない状態が前提条件だよ!守れないならさよなら!

前々チームで一緒だった人に教えてもらったけど、guardelse の先は return するなり throw するなり、フローから抜けることが強制されるらしい。知らなかった。うっかり抜け忘れるということがなくていいですね。