Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
switch / case / where / fallthrough
Swiftの『switch』文は、値に対してパターンマッチングを行う強力な条件分岐構文です。C言語と異なりフォールスルーがなく、全ケースを網羅する必要があります。
構文
switch 値 {
case パターン1:
// 処理
case パターン2, パターン3:
// 複数パターン
case パターン4 where 条件:
// where句による絞り込み
default:
// いずれにも一致しない場合
}
構文一覧
| 構文 | 概要 |
|---|---|
| case 値: | 指定した値に一致する場合の処理を記述します。 |
| case 値1, 値2: | 複数の値をまとめて1つのcaseで処理します。 |
| case 範囲: | 数値の範囲(例:1...5)にマッチするcaseを記述します。 |
| case let x where 条件: | 値をバインドしてwhere句で条件を追加します。 |
| case (x, y): | タプルのパターンマッチングを行います。 |
| default: | どのcaseにも一致しない場合の処理を記述します。 |
| fallthrough | 次のcaseに処理を移します(明示的に指定が必要)。 |
サンプルコード
// 基本的なswitch
let day = 3
switch day {
case 1:
print("月曜日")
case 2:
print("火曜日")
case 3:
print("水曜日")
case 4, 5:
print("木曜日または金曜日")
case 6, 7:
print("週末")
default:
print("無効な値")
}
// 範囲マッチング
let score = 85
switch score {
case 90...100:
print("優")
case 70..<90:
print("良")
case 60..<70:
print("可")
default:
print("不可")
}
// where句による条件追加
let number = 42
switch number {
case let n where n % 2 == 0:
print("\(n) は偶数です")
case let n where n % 2 != 0:
print("\(n) は奇数です")
default:
break
}
// タプルのパターンマッチング
let point = (1, 0)
switch point {
case (0, 0):
print("原点")
case (let x, 0):
print("x軸上: x = \(x)")
case (0, let y):
print("y軸上: y = \(y)")
case (let x, let y):
print("座標: (\(x), \(y))")
}
概要
Swiftの『switch』文はC言語と異なり、各caseの末尾で自動的に処理が終了します(暗黙のフォールスルーなし)。次のcaseに処理を続けたい場合は明示的に『fallthrough』キーワードを使います。
Swiftの『switch』はすべての可能な値を網羅する必要があります。enumを対象にする場合は全caseを列挙するか、『default』を追加してください。網羅性が不十分な場合はコンパイルエラーになります。
break文との組み合わせについてはbreak / continue / return / labeled statementを参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。