0Pricing
Swift Academy · レッスン

値に対する網羅的なswitch

すべてのケースを処理するか、defaultブランチを使用します。

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

switch の役割

switch は値を複数の case と比較し、最初に一致した case を実行します。長い if/else-if の連鎖を明確に置き換えられます。

let day = 3
switch day {
case 1:
    print("Monday")
case 2:
    print("Tuesday")
case 3:
    print("Wednesday")
default:
    print("Other")
}

暗黙的なフォールスルーはない

C とは異なり、Swift の case は自動的に次の case へフォールスルーしません。一致した case の実行後に switch は終了するため、break は必要ありません。

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

switch は網羅的である必要がある

switch では、考えられるすべての値を網羅する必要があります。Int の場合はすべてを列挙できないため、default case を指定します。

let code = 500
switch code {
case 200:
    print("OK")
case 404:
    print("Not Found")
default:
    print("Unhandled: \(code)")
}

default case

default case は、それより前の case に一致しなかったすべての値を受け取ります。最後に記述する必要があります。

let grade = "X"
switch grade {
case "A":
    print("Excellent")
case "B":
    print("Good")
default:
    print("Needs review")
}

文字列に対する switch

switch は文字列を含む、Equatable な任意の値に対して使用できます。

let command = "start"
switch command {
case "start":
    print("Starting")
case "stop":
    print("Stopping")
default:
    print("Unknown command")
}

空の case はない

各 case には少なくとも1つの文が必要です。case で何も実行したくない場合は、break と記述します。

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

文としての switch

switch は文を実行するものであり、それ自体が値を返すわけではありません。値を生成するには、各 case 内で代入するか、関数の呼び出しに使用します。

let level = 2
var label: String
switch level {
case 1: label = "low"
case 2: label = "mid"
default: label = "high"
}
print(label)

Bool に対する switch

Bool に対して、true と false の case を使って switch できます。両方の case で網羅されるため、default は必要ありません。

let isReady = true
switch isReady {
case true:
    print("Go")
case false:
    print("Wait")
}

列挙型には default が不要

列挙型のすべての case を処理する場合、switch はすでに網羅的なので、default は不要です。

enum Direction { case north, south }
let d = Direction.north
switch d {
case .north: print("Up")
case .south: print("Down")
}

読みやすい多方向のロジック

switch を使うと、多方向の判断を整理して記述できます。それぞれの結果が独立したラベル付き case にまとまるため、読みやすく拡張もしやすくなります。

let score = 72
var result: String
switch score {
case 90...100: result = "A"
case 80..<90: result = "B"
case 70..<80: result = "C"
default: result = "F"
}
print(result)

default の配置

default は最後の case でなければなりません。先に配置すると後の case に到達できなくなり、Swift では禁止されています。

let x = 7
switch x {
case 0:
    print("zero")
case 7:
    print("seven")
default:
    print("something else")
}

クイックチェック

網羅的な switch をテストします。

まとめ: 値に対する網羅的な switch

Swift の switch は最初に一致した case を実行し、暗黙的にフォールスルーすることはなく、網羅的でなければなりません。Int や String のように値の範囲が開かれた型には default を使います。すべての case を処理した列挙型には default は不要です。

let n = 3
switch n {
case 1: print("a")
default: print("b")
}

よくある質問

「値に対する網羅的なswitch」レッスンは無料ですか?

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

「値に対する網羅的なswitch」で何を学びますか?

すべてのケースを処理するか、defaultブランチを使用します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「値に対する網羅的なswitch」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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