0Pricing
Swift Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

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

  1. breakとcontinueの基礎
  2. ラベル付き文
  3. ネストしたループから抜ける
  4. switchコンテキストでのループ制御
← Swift Academyに戻る