読んでない人は、Swiftでswitchを使う基本編から読もう。
もうちょっと応用したswitchの使い方を紹介するよ。
Swiftのswitchで範囲指定, fallthroughを使う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
let num = 4 var result: String = "numは" switch num { case 1...3: print("1以上3以下だよ") case 1..<4: print("1以上4未満だよ") case 4: result += "4" fallthrough default: result += "だよ" } print(result) // "numは4だよ" |
まず、範囲指定(range)が使えるよ。
- 値1…値2で -> 値1 以上 値2以下 の範囲で絞れる
- 値1..<値2で -> 値1 以上 値2未満 の範囲で絞れる
また、Javaとかでbreakで止めないと処理が下に流れていたんだけど、それとは逆で処理を下に流すには fallthrough を書いてあげる必要があるよ。
今回のパターンでは case4: に一致した後、fallthroughがあるので、default節も実行しているよ。
Swiftのswitchでタプルを使う
1 2 3 4 5 6 7 8 9 10 11 |
let numTuple = (4, 13) switch (numTuple) { case (0, 0): break case (4, 13): print("縁起の悪い数字だよ") default: print("一致しなかったよ") } // "縁起の悪い数字だよ" |
こんな感じでタプルでも使えるよ。
タプルとはなんぞや?という人は、タプルの記事を見よう。
おまけ: switchでタプルとワイルドカードを使う
1 2 3 4 5 6 7 8 9 10 11 12 13 |
let numTuple = (4, 13) switch (numTuple) { case (0, 0): break case (_, 13): print("2つめが13だよ") case (4, _): print("1つめが4だよ") default: print("一致しなかったよ") } // "2つめが13だよ" |
こんな感じでタプルの一部にワイルドカード( _ )を指定することで、その部分を無視させることができるよ。
同じく、ワイルドカードとはなんぞや?という人は、ワイルドカードの記事を見よう。