switchコンテキストでのループ制御
ループ内のbreakとswitch内のbreakの違いを理解します。
「switchコンテキストでのループ制御」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。
switch での break
switch 内では、break によって switch のケースを終了します。Swift のケースは暗黙に次へ移らないため、通常 break は省略できますが、記述することもできます。
let n = 2
switch n {
case 1:
print("one")
case 2:
print("two")
break
default:
print("other")
}break を使った空のケース
ケースで何もしないことを明示するには break を使います。空の本体にするよりも意図が明確です。
let code = 0
switch code {
case 0:
break // intentionally ignore
default:
print("handled", code)
}
print("after switch")ループ内の switch での break
ループ内に switch がある場合、通常の break が終了するのはループではなく switch です。
for n in 1...4 {
switch n {
case 3:
break // exits switch only
default:
print(n)
}
}
print("loop finished")switch からループを終了する
switch の内部から、それを囲むループを終了するには、ループにラベルを付けて break label を使います。
loop: for n in 1...5 {
switch n {
case 3:
break loop
default:
print(n)
}
}
print("done")switch から continue する
switch 内の通常の continue は、それを囲むループを対象とし、その次の反復へスキップします。
for n in 1...5 {
switch n {
case let x where x % 2 == 0:
continue
default:
print(n)
}
}この違いが重要な理由
switch に対する break とループに対する break を混同するのは、よくあるバグです。switch 内の単独の break は switch だけを抜けることを覚えておきましょう。
for n in 1...3 {
switch n {
case 2:
break
default:
print("value", n)
}
}
print("all values processed")fallthrough
実際にフォールスルー動作をさせたい場合は、明示的な fallthrough キーワードを使います。
let n = 1
switch n {
case 1:
print("one")
fallthrough
case 2:
print("two")
default:
print("done")
}明確さのためのラベル付き break
厳密には必要ない場合でも、ラベル付き break を使うと、ループを終了する意図をコードに示せます。
scan: for value in [10, 20, 30, 40] {
switch value {
case 30:
break scan
default:
print(value)
}
}where 句との組み合わせ
パターンの where 句と continue を組み合わせると、switch 内で条件によるフィルタリングを簡潔に行えます。
for n in 1...6 {
switch n {
case let x where x > 4:
continue
default:
print(n)
}
}ネストした switch とループ
ネストしたループと switch を組み合わせる場合、ラベルによって対象を明確にできます。
outer: for i in 1...3 {
for j in 1...3 {
switch j {
case 2:
break outer
default:
print(i, j)
}
}
}ベストプラクティス
単独の break は switch のケースを抜ける場合だけに使い、switch の内部からループを終了する場合は必ずループにラベルを付けます。
main: for n in 1...5 {
switch n {
case 4:
break main
default:
print(n)
}
}クイックチェック
switch とループにおける break の違いを確認しましょう。
まとめ
switch 内の単独の break は switch のケースだけを終了します(Swift には暗黙のフォールスルーがないため、必要な場合は fallthrough を使います)。switch の内部から、それを囲むループを終了するには、ループにラベルを付けて break label を使います。単独の continue は引き続きループを対象とします。
loop: for n in 1...4 {
switch n {
case 3: break loop
default: print(n)
}
}よくある質問
「switchコンテキストでのループ制御」レッスンは無料ですか?
はい。「switchコンテキストでのループ制御」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。
「switchコンテキストでのループ制御」で何を学びますか?
ループ内のbreakとswitch内のbreakの違いを理解します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「switchコンテキストでのループ制御」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- breakとcontinueの基礎
- ラベル付き文
- ネストしたループから抜ける
- switchコンテキストでのループ制御