🤖

【Swift】guardの使い方とguardを使う理由

2023/11/15に公開

最初に

swiftの条件文は、他の言語と同様にif、switchがあります。 しかし、少し不慣れかもしれないguard文があります。これについて見てみます。

guard文とは

guard文は関数やメソッド、反復文などブロック内部に宣言します。 そのため、関数の条件を検査する用途にも多く使われています。 guard構文の基本的な形態を見ます。

guard 条件 else{
     //条件がfalseなら実行
     return || throw
}

guard文は条件が間違っている場合は全て捨てて、私たちが望む条件だけを通過させるという機能として使われます。 if文との違いから見ると、if文は「~ならば~しろ」の実行構文だが、guardは「~なければ終わらせろ」という意味だからです。 したがって、guard文は「早い終了」が核心です。

func test() {
    let condition1: Bool = true
  let condition2: Bool = true
  guard condition1, condition2 else {
    return print("bye")
    }
    print("come in")
}
test()
// // prints "come in"
// どちらの条件もtrue であるため、guard 内部実行文は実行されないです。

guard文は条件が合わないと終了させるように文法を含めなければならないです。 そのため、必ずreturnやthrowをします。

guard文の限界とif構文との違い

guard文は関数やメソッド、あるいは反復文の中でのみ使用できる限界があります。

if文を使用した場合

func solution() {
    if condition1 {
    if condition2 {
        if condition 3 {
        print("come in")
             }  else {
        print("bye")
             }
       } else {
       print("bye")
       }
  } else {
  print("bye")
  }
}
// 3つの条件がすべtrueであればcome in、1つでもfalseであればbyeを出力する関数。

guard文で作成

func solution() {
	guard condition1 else { return print("bye") }
        guard condition2 else { return print("bye") }
        guard condition3 else { return print("bye") }
    print("come in")
}

条件式でelseを付けながら条件式で検査するより、必要な条件をそのまま書くという点で可読性が高くなリます。

Discussion