0Pricing
Swift Academy · レッスン

パターンマッチングによる強力なswitch

表現力の高いswitchを記述します。associated value、範囲、タプルをマッチさせ、where句を追加します。分岐を網羅的で読みやすく保ちます。

「パターンマッチングによる強力なswitch」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全3レッスンが含まれています。

パターンマッチングを使う理由

Swiftのswitchは、ペイロードを持つ列挙型、数値の範囲、タプル、where条件などのパターンにマッチします。また、すべてのケースを網羅する必要があります。

関連値

ケースパターン内でlet/varを直接使うと、関連値をバインドできます。

enum Network {
    case success(code: Int, body: String)
    case failure(message: String)
    case offline
}

let r1: Network = .success(code: 200, body: "OK")
switch r1 {
case .success(let code, let body):
    print("success", code, body)
case .failure(let msg):
    print("fail:", msg)
case .offline:
    print("offline")
}

範囲マッチング

90...100や80..<90のような数値の範囲にマッチさせます。1つのcaseで複数のパターンにマッチさせるには,を使用します。

let score = 73
switch score {
case 90...100:
    print("A")
case 80..<90:
    print("B")
case 60..<80:
    print("C")
case 0..<60:
    print("D")
default:
    print("invalid")
}

タプルとwhere

タプルにマッチさせ、where条件で絞り込むと、ジオメトリに似たチェックを読みやすく記述できます。

let point = (x: -2, y: 3)
switch point {
case (0, 0):
    print("origin")
case (let x, 0):
    print("x-axis at", x)
case (0, let y):
    print("y-axis at", y)
case (let x, let y) where x > 0 && y > 0:
    print("Q1:", x, y)
default:
    print("somewhere else")
}

ワイルドカードと部分一致

フィールドを無視するには_を使うか、必要なものだけを束縛します。分岐は小さく明確に保ちます。

enum Event {
    case message(String, priority: Int)
    case ping
}
let e: Event = .message("update", priority: 1)

switch e {
case .message(let text, priority: _):
    print("msg:", text)           // ignore priority with _
case .ping:
    print("ping")
}

ヒント

ヒント:

  • まず具体的なケースを優先し、まれな残りにはdefaultを使います。
  • case letで値を束縛し、whereで条件を絞り込みます。
  • 可能な場合は、defaultなしでもswitchが網羅的になるようにenumを設計します。

switchの表現力

確認:Swiftのswitchはなぜより表現力が高いのでしょうか。

まとめ

まとめ:switchを使ってパターンに一致させます。enumのペイロードを束縛し、範囲を対象にし、タプルを組み合わせ、whereで絞り込みながら、網羅性を保ちます。

よくある質問

「パターンマッチングによる強力なswitch」レッスンは無料ですか?

はい。「パターンマッチングによる強力なswitch」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全3レッスンが含まれています。

「パターンマッチングによる強力なswitch」で何を学びますか?

表現力の高いswitchを記述します。associated value、範囲、タプルをマッチさせ、where句を追加します。分岐を網羅的で読みやすく保ちます。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。

「パターンマッチングによる強力なswitch」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

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

  1. 強力な列挙型の基本
  2. パターンマッチングによる強力なswitch
  3. 有限状態のモデル化
← Swift Academyに戻る