最近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文の構文理解もまだまだできていないので、こちらについても引き続き学習を進めていきます。