値に対する網羅的な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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 値に対する網羅的なswitch
- 範囲とタプルのマッチング
- 値のバインディングとwhere句
- 複合ケースとfallthrough