2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

最近Swiftを触り始めてから、guard文というものを見るようになりました。
私がこれまで触れてきた言語(pythonやJavaScriptなど)では見かけない文法だったので、自分用の備忘録として、どんな処理を行う文法なのか記載します。

guard文とは?

guard文とは、「条件不成立時に早期退出を行うための条件分岐文」です。

guard文は、条件式がfalseを返す場合にのみ { } 内の分を実行し、条件式がtrueを返す場合は { } 内の文の実行をスキップします。
逆に言うと、条件式がfalseである場合に { } 内の処理を実行します。

{ } 内の文では、guard文が記述されているスコープの外に退出する処理を記載する必要があります。

基本的な使用方法

guard 条件式 else {
    条件式がfalseの場合に実行される文

    //guard文の記述されているスコープ外に退出する処理
    return xxxx
}

処理例

例として、String型の引数nameがTaroでなければ、NameIsTaro関数から退出する処理を記載してみます。

func NameIsTaro(name: String) {
    guard name === "Taro" else {
        print("彼の名前は\(name)です。Taroではありません。")
        return
    }

    // 彼の名前はTaroであることが保証される。
    print("彼の名前は\(Taro)です。")
}

NameIsTaro("Jiro")
// 結果
彼の名前はJiroです。Taroではありません。

NameIsTaro("Taro")
// 結果
彼の名前はTaroです。

上記のように、nameがJiroである場合にはelse内の処理を実行しスコープの処理外に退出します。対して、nameがTaroである場合にはelse内の処理をスキップし、後続処理が実行されることとなります。

まとめ

guard文はif文と同様に条件分岐文ですが、条件式がfalseの場合にelse内の処理が実行される構文と理解しました。

まだまだguard文には慣れていないのでif文を多用してしまっているのですが、今後はguard文も使用していきます。

また、今回は記載していませんが、guard-let文の構文理解もまだまだできていないので、こちらについても引き続き学習を進めていきます。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?