1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Swift】guard文ってなに?

Last updated at Posted at 2022-11-30

guard文ってなに?

簡単にいうと、条件が不成立時に早期退出を行うための条件分岐文です。
if文と同じく条件式の評価結果となるbool型(true,false)の値に応じた処理を行います。
guard文は、条件式がfalseを返す場合にのみ{}内の文を実行し、条件式がtrueを返す場合は{}内の文の実行をスキップします。
ややこしいですが、分かりやすくいうとtrueの場合の処理が無いif文というイメージです。

guard文の書き方
guard 条件式 else {
    条件式がfalseの場合に実行される処理
    return または break または throw (guard文が記述されているスコープの外に退出する必要がある)
}

guard文のスコープ外への退出の強制

guard文は、条件に合わない場合に処理を抜けるコードをシンプルに記述するために用意された構文であるため、
else節でguard文が含まれるスコープから退出する処理が必要なので、
retrunbreakthrowのいずれかを必ず記述するルールになっています。
スクリーンショット 2022-12-01 0.07.35.png
記述しない場合、上記のようにコンパイルエラーが表示されます。
スコープからの退出はコンパイラによってチェックされるため、guard文のelse節以降では、guard文の条件式が必ず成り立っていることがコンパイル時に保証されます。

guard文を使うメリット

if文のelseの時の処理だけを書きたい時にguard文は活躍します。
guardの方がコードの量も減り、メンテナンスもしやすくなります。

if文の場合
let number: Int? = nil
if let id = number {
    // numberがnilでない時の処理
} else {
    // numberがnilの時の処理 ←ここの処理だけを書きたい
}
guard文の場合
let number: Int? = nil
guard let id = number else {
     // numberがnilの時の処理
    return
}

最後に

まだまだ勉強不足ですがSwiftはやっぱ楽しいですね。
もし間違いなどございましたらご指摘いただけると助かります!

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?