Swiftのif caseとguard caseを完全解説!初心者でもわかる条件分岐の使い方
生徒
「Swiftで特定のパターンだけを条件分岐したいときってどうすればいいんですか?」
先生
「その場合は、if caseやguard caseを使うと便利ですよ!」
生徒
「普通のif文やswitch文じゃだめなんですか?」
先生
「もちろん使えますが、if caseやguard caseを使うと、より簡潔に書けるんです。それでは基本から見ていきましょう!」
1. Swiftのif caseとは?
Swiftのif caseは、「特定のパターンにマッチするかどうか」を条件にできる構文です。switch文のように複数のケースを分けるのではなく、「このパターンだけを処理したい!」というときに便利です。
たとえば、列挙型(enum)の中である特定の値だけを判定したい場合に使えます。
2. if caseの基本的な使い方
次のようなenumがあったとします。
enum 天気 {
case 晴れ
case 曇り
case 雨
}
この天気が雨のときだけ、傘を持っていく処理をしたいとしましょう。その場合、if caseを使ってこう書けます。
let 今日の天気 = 天気.雨
if case .雨 = 今日の天気 {
print("傘を持っていきましょう!")
}
このように、if case .雨 = 今日の天気という書き方で、「今日の天気が雨だったら」という条件が書けるのです。
3. if caseと値の取り出し
列挙型に関連値(変数を持つケース)がある場合は、その中の値を取り出すこともできます。
enum メッセージ {
case テキスト(String)
case 画像(URL)
}
このメッセージがテキストのときだけ、その文字列を取り出して使うには、次のように書きます。
let 受信メッセージ = メッセージ.テキスト("こんにちは!")
if case let .テキスト(内容) = 受信メッセージ {
print("テキスト内容: \(内容)")
}
case letを使うことで、関連するデータ(この場合は内容)を簡単に取り出すことができます。
4. guard caseとは?
guard caseはif caseと似ていますが、早めに関数から抜けたいときに使います。「この条件じゃなければ早く抜ける」という処理に向いています。
たとえば、関数の最初で条件チェックをして、合わなければすぐreturnしたいときなどです。
5. guard caseの使い方
先ほどと同じメッセージの例で、関数の中で処理する場合を考えてみましょう。
func メッセージを表示する(_ メッセージ: メッセージ) {
guard case let .テキスト(内容) = メッセージ else {
print("テキストメッセージではありません")
return
}
print("受信したテキスト: \(内容)")
}
guard caseを使うと、条件に合わなかった場合にelseの中で処理をして、早めに抜けることができます。条件に合えばその後のコードが実行されます。
6. if caseとguard caseはいつ使う?
ここまでの説明をふまえて、それぞれの使い分けの目安は以下の通りです。
- if case: 条件に合ったときだけ処理をしたい場合に使う
- guard case: 条件に合わなければ処理を中断したいときに使う
特にguard caseは、関数の早期リターンに使うとコードがすっきりします。
7. 実際の例:ログインチェック
次に、より現実的な例としてログイン状態のチェックを考えてみましょう。
enum ログイン状態 {
case 未ログイン
case ログイン中(ユーザー名: String)
}
func ダッシュボードに進む(_ 状態: ログイン状態) {
guard case let .ログイン中(ユーザー名) = 状態 else {
print("ログインが必要です")
return
}
print("\(ユーザー名) さん、ようこそ!")
}
このようにguard caseを使うことで、ログインしていない場合は早めに関数を抜けることができます。初心者の方でも、読みやすく理解しやすいコードになります。
8. Swiftのif caseとguard caseでコードをシンプルに!
Swiftのif caseとguard caseは、特定の条件にマッチした場合だけ処理をしたいときにとても便利な書き方です。
特にguard caseは、条件に合わない場合に早く抜けるという設計ができるため、初心者の方でも無理なく読みやすいコードが書けます。
複雑に見えるかもしれませんが、実はswitch文の一部を簡略化したようなものです。パターンマッチングを使って、Swiftらしいシンプルで安全なコードを目指しましょう!