0Pricing
Swift Academy · レッスン

複合ケースとfallthrough

ケースを組み合わせ、意図的にfallthroughを使用します。

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

複合 case

値をカンマで区切ると、1つの case で複数の値に一致させられます。case "a", "b": のように記述します。列挙したすべての値で同じコードが実行されます。

let letter = "a"
switch letter {
case "a", "e", "i", "o", "u":
    print("Vowel")
default:
    print("Consonant")
}

複合 case を使う理由

複合 case を使うと、同じ本体を重複して記述せずに済みます。同じ動作をさせる値をまとめられます。

let day = 6
switch day {
case 6, 7:
    print("Weekend")
case 1, 2, 3, 4, 5:
    print("Weekday")
default:
    print("Invalid day")
}

範囲を含む複合 case

1つの複合 case 内で、範囲と個別の値を組み合わせることができます。

let code = 204
switch code {
case 200, 201, 204:
    print("Success")
case 400...499:
    print("Client error")
default:
    print("Other")
}

複合 case とバインディング

複合 case でバインディングを使う場合、すべての選択肢で同じ名前を同じ型としてバインドする必要があります。

let point = (0, 5)
switch point {
case (let v, 0), (0, let v):
    print("On an axis at distance \(v)")
default:
    print("Off the axes")
}

fallthrough の導入

Swift の case はデフォルトではフォールスルーしません。fallthrough キーワードを使うと、次の case へ処理を続行できます。

let n = 1
switch n {
case 1:
    print("one")
    fallthrough
case 2:
    print("two")
default:
    print("done")
}

fallthrough の仕組み

fallthrough は無条件に次の case 本体へ移動します。次の case の条件を再確認するわけではありません。意図を明確にして使用してください。

let level = 3
switch level {
case 3:
    print("Level 3 perks")
    fallthrough
case 2:
    print("Level 2 perks")
    fallthrough
case 1:
    print("Level 1 perks")
default:
    break
}

fallthrough はパターンを無視する

fallthrough は次のパターンのチェックをスキップするため、次の case で値のバインディングに依存してはいけません。そうするとコンパイルできません。

let x = 10
switch x {
case 10:
    print("ten")
    fallthrough
default:
    print("reached default")
}

複合 case と fallthrough

複数の値に同じコードを実行する場合は、複合 case を優先してください。fallthrough は、本当に処理を連鎖させたい場合に限定して使います。

let grade = "B"
switch grade {
case "A", "B":
    print("Passing")
default:
    print("Other")
}

fallthrough で累積する

fallthrough は、下位のティアまでのすべての特典を列挙する場合のように、効果を累積させる処理に役立ちます。

let tier = 2
var perks = [String]()
switch tier {
case 2:
    perks.append("Premium")
    fallthrough
case 1:
    perks.append("Basic")
default:
    break
}
print(perks)

両方を組み合わせる

同じ switch 内で、適した箇所に複合 case と fallthrough の両方を使用できます。

let n = 0
switch n {
case 0:
    print("zero")
    fallthrough
case 1, 2:
    print("small")
default:
    print("large")
}

読みやすさに関する注意

多くの言語ではフォールスルーがデフォルトであるため、fallthrough は読者を驚かせることがあります。意図をコメントに記すか、可能な場合は複合 case を優先してください。

let status = "warn"
switch status {
case "warn", "error":
    print("Needs attention")
default:
    print("OK")
}

クイックチェック

複合 case と fallthrough をテストします。

まとめ: 複合 case と Fallthrough

コンマで区切った複合ケースを使うと、複数の値で同じ本体を共有できます。実行を意図的に次のケースへ連続させたい場合に限り、明示的な fallthrough キーワードを使用してください。

let n = 2
switch n {
case 1, 2: print("small")
default: print("big")
}

よくある質問

「複合ケースとfallthrough」レッスンは無料ですか?

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

「複合ケースとfallthrough」で何を学びますか?

ケースを組み合わせ、意図的にfallthroughを使用します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「複合ケースとfallthrough」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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