guard文ってなに?
簡単にいうと、条件が不成立時に早期退出を行うための条件分岐文です。
if文と同じく条件式の評価結果となるbool型(true,false)の値に応じた処理を行います。
guard文は、条件式がfalseを返す場合にのみ{}内の文を実行し、条件式がtrueを返す場合は{}内の文の実行をスキップします。
ややこしいですが、分かりやすくいうとtrueの場合の処理が無いif文というイメージです。
guard 条件式 else {
条件式がfalseの場合に実行される処理
return または break または throw (guard文が記述されているスコープの外に退出する必要がある)
}
guard文のスコープ外への退出の強制
guard文は、条件に合わない場合に処理を抜けるコードをシンプルに記述するために用意された構文であるため、
else節でguard文が含まれるスコープから退出する処理が必要なので、
retrun、break、throwのいずれかを必ず記述するルールになっています。
記述しない場合、上記のようにコンパイルエラーが表示されます。
スコープからの退出はコンパイラによってチェックされるため、guard文のelse節以降では、guard文の条件式が必ず成り立っていることがコンパイル時に保証されます。
guard文を使うメリット
if文のelseの時の処理だけを書きたい時にguard文は活躍します。
guardの方がコードの量も減り、メンテナンスもしやすくなります。
let number: Int? = nil
if let id = number {
// numberがnilでない時の処理
} else {
// numberがnilの時の処理 ←ここの処理だけを書きたい
}
let number: Int? = nil
guard let id = number else {
// numberがnilの時の処理
return
}
最後に
まだまだ勉強不足ですがSwiftはやっぱ楽しいですね。
もし間違いなどございましたらご指摘いただけると助かります!