web-dev-qa-db-ja.com

ブレークに応答する内部構造から外部ループを切断する方法(ループ/スイッチ)

Swiftのbreakステートメントに応答するネストされた構造内から外側のループを解除するにはどうすればよいですか?

例えば:

while someCondition {
    if someOtherCondition {
        switch (someValue) {
            case 0:     // do something
            case 1:     // exit loop
            case 2...5: // do something else
            default:    break
        }
    } else {
        someCondition = false
    }
}

breakswitchから抜け出すだけで、Swiftでは空の場合は許可されないため使用する必要があります。 switch内からループを完全に終了するにはどうすればよいですか?

71
nhgrif

Swiftでは ラベル付きステートメント を使用できます。ラベル付きステートメントを使用すると、ループのネストの深さに関係なく、どの制御構造をbreakにするかを指定できます(ただし、一般的に、読みやすさの観点からはネストは少ない方が良いです)。これはcontinueでも機能します。

例:

outerLoop: while someCondition {
    if someOtherCondition {
        switch (someValue) {
            case 0:     // do something
            case 1:     break outerLoop // exit loop
            case 2...5: // do something else
            default:    break
        }
    } else {
        someCondition = false
    }
}
155
nhgrif