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 のどれかです。") が実行されます。

Swift の switch 文 1

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("その他です。")
}

Swift の switch 文 2

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("その他です。")
}

Swift の switch 文 3

警告は消えませんが、ひとつ目の 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("その他です。")
}

Swift の switch 文 4

value は 4 なので case 2..<10 のコードブロックが実行されていますね。


以上、基本的な Swift の switch 文 の使い方についてご説明しました。

© 2024 iOS 開発入門