範囲とタプルのマッチング
数値範囲やタプルの形状でswitch分岐します。
「範囲とタプルのマッチング」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。
範囲に一致させる
case では、1...5 のような範囲演算子を使って、値の範囲全体に一致させることができます。値が範囲内にあれば、その case が実行されます。
let score = 85
switch score {
case 0..<50:
print("Fail")
case 50...100:
print("Pass")
default:
print("Invalid")
}閉区間と半開区間
上限を含めるには閉区間(...)を使い、上限を含めないには半開区間(..<)を使います。範囲が重ならないような境界を選んでください。
let age = 18
switch age {
case 0..<13:
print("Child")
case 13..<20:
print("Teen")
default:
print("Adult")
}範囲 case の順序
Swift は case を上から下へ確認し、最初に一致したものを実行します。そのため、範囲が重ならないようにすると動作を予測しやすくなります。
let temp = 30
switch temp {
case ..<0:
print("Freezing")
case 0..<20:
print("Cool")
case 20...:
print("Warm")
default:
print("?")
}タプルに対する switch
タプルに対して switch し、複数の値に一度に一致させることができます。各位置には、リテラル、範囲、またはワイルドカード _ を指定できます。
let point = (1, 1)
switch point {
case (0, 0):
print("Origin")
case (_, 0):
print("On x-axis")
case (0, _):
print("On y-axis")
default:
print("Elsewhere")
}タプル内のワイルドカード
アンダースコア _ はその位置の任意の値に一致するため、必要な部分にだけ注目できます。
let result = (200, "OK")
switch result {
case (200, _):
print("Success")
case (_, "Error"):
print("Has error")
default:
print("Other")
}タプル内の範囲
タプルパターンでは各位置に範囲を指定でき、強力な2次元の一致判定を行えます。
let coord = (3, 8)
switch coord {
case (0...5, 0...5):
print("Bottom-left quadrant")
case (0...5, 6...10):
print("Top-left quadrant")
default:
print("Far")
}完全一致するタプル
すべての要素を指定したタプルに一致させ、特定の組み合わせを検出できます。
let move = ("up", 2)
switch move {
case ("up", 2):
print("Jump twice up")
case ("down", _):
print("Going down")
default:
print("Other move")
}数値を分類する
範囲による一致を使うと、数値を区分に分類する処理を簡潔かつ直接的に記述できます。
let n = -4
switch n {
case ..<0:
print("negative")
case 0:
print("zero")
case 1...:
print("positive")
default:
print("?")
}文字の範囲
文字は比較可能なので、文字の範囲にも一致させることができます。
let ch: Character = "k"
switch ch {
case "a"..."m":
print("First half")
case "n"..."z":
print("Second half")
default:
print("Not a lowercase letter")
}タプルの各位置を組み合わせる
タプルの一致判定では、すべての位置をまとめて評価します。case が実行されるには、すべての位置が一致する必要があります。
let weather = (sunny: true, temp: 25)
switch (weather.sunny, weather.temp) {
case (true, 20...):
print("Nice and warm")
case (true, _):
print("Sunny but cool")
default:
print("Not sunny")
}強力である理由
範囲パターンとタプルパターンを使うと、多数のネストした if 文が必要になるロジックを、平坦で読みやすい1つの switch で表現できます。
let (x, y) = (0, 5)
switch (x, y) {
case (0, 0): print("origin")
case (0, _): print("y-axis")
case (_, 0): print("x-axis")
default: print("plane")
}クイックチェック
範囲とタプルの一致をテストします。
まとめ: 範囲とタプルに一致させる
case では 1...5 や 0..<n のような範囲に一致させることができ、タプルパターンではリテラル、範囲、ワイルドカード _ を使って複数の値に一度に一致させられます。
let p = (0, 4)
switch p {
case (0, _): print("y-axis")
default: print("other")
}よくある質問
「範囲とタプルのマッチング」レッスンは無料ですか?
はい。「範囲とタプルのマッチング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。
「範囲とタプルのマッチング」で何を学びますか?
数値範囲やタプルの形状でswitch分岐します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「範囲とタプルのマッチング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 値に対する網羅的なswitch
- 範囲とタプルのマッチング
- 値のバインディングとwhere句
- 複合ケースとfallthrough