0Pricing
Swift Academy · レッスン

範囲とタプルのマッチング

数値範囲やタプルの形状で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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 値に対する網羅的なswitch
  2. 範囲とタプルのマッチング
  3. 値のバインディングとwhere句
  4. 複合ケースとfallthrough
← Swift Academyに戻る