パターンマッチングによる強力な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フィードバックを取得できます。ローカル設定は不要です。