Swift の switch 文
ここでは基本的な Swift の switch 文 の使い方についてご説明します。
Swift の switch 文の基本
if 文では、条件文を評価してそれが true の時はそのコードブロックを実行しました。
swicth 文では、ある変数の値がマッチする case のコードブロックを実行します。
Swift の swicth 文の基本的な構文は次の通りです。
swicth [変数] {
case [値1]:
[変数 = 値1 の時に実行されるコードブロック]
case [値2],[値3]:
[変数 = 値2 か 値3 の時に実行されるコードブロック]
default:
[上の case にマッチしない時に実行されるコードブロック]
}
case は何個あってもかまいません。
default は必須ではありませんが、Swift の switch 文では、どれかの case または default のコードブロックが実行されるようになっていないとエラーになります。
また、case や default の後に実行されるコードがない時もエラーになります。
C 言語や JavaScript などように case ごとに break と書く必要はなく、基本が break の動きです。
上から順番に値をチェックしていって、最初にマッチした case のコードブロックを実行して switch 文を抜けます。
それでは switch 文を使ってみましょう。
次の switch 文を実行すると結果はどうなるでしょうか。
let value = 4
switch value {
case 1:
print("value は 1 です。")
case 2, 4, 6, 8:
print("value は 2, 4, 6, 8 のどれかです。")
default:
print("その他です。")
}
value は 4 なので、case 2, 4, 6, 8 に続くコード print("value は 2, 4, 6, 8 のどれかです。") が実行されます。
switch で case をフォールスルーさせる
先ほども書きましたが、Swift の switch 文は上から順番に値をチェックしていって、最初にマッチした case のコードブロックを実行して switch 文を抜けます。
その時に switch 文を抜けずに、続く case 文も評価してコードを実行させたい時には、コードブロックの最後に fallthrough キーワードを追加します。
例えば、先ほどのコードの一つ目の case の値とコードを 1 から 4 に変更して実行すると次のようになります。
let value = 4
switch value {
case 4:
print("value は 4 です。")
case 2, 4, 6, 8:
print("value は 2, 4, 6, 8 のどれかです。")
default:
print("その他です。")
}
value が 4 なので、ひとつ目の case のコードブロックが実行され、switch 文を抜けています。
エラーにはなりませんが、値は前のパターンで処理されているので、削除してはどうかというような警告が出ています。
これを意図的にフォールスルーさせるには次のようにします。
let value = 4
switch value {
case 4:
print("value は 4 です。")
fallthrough
case 2, 4, 6, 8:
print("value は 2, 4, 6, 8 のどれかです。")
default:
print("その他です。")
}
警告は消えませんが、ひとつ目の case と二つ目の case の両方のコードブロックが実行されていますね。
switch の case の値を範囲で指定する
Swift の switch 文では、case に続く値を範囲で指定することも可能です。
その時は case に続けて範囲演算子を使って値を指定します。
例えば次のような感じで case の値を範囲で指定できます。
6 行目は 2 以上 10 未満、8 行目は 10 以上という範囲で case の値を指定しています。
let value = 4
switch value {
case 1:
print("value は 1 です。")
case 2..<10:
print("value は 2 以上 10 未満です。")
case 10...:
print("value は 10 以上です。")
default:
print("その他です。")
}
value は 4 なので case 2..<10 のコードブロックが実行されていますね。
以上、基本的な Swift の switch 文 の使い方についてご説明しました。