So brechen Sie äußere Schleifen von inneren Strukturen, die auf Unterbrechungen reagieren (Schleifen / Schalter)

78

Wie kann ich eine äußere Schleife aus einer verschachtelten Struktur heraus brechen, die auf die breakAnweisung in Swift reagiert ?

Zum Beispiel:

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
    }
}

Das breakwird mich nur aus dem switchherausholen, und in Swift muss es verwendet werden, da leere Fälle nicht erlaubt sind. Wie kann ich die Schleife vollständig aus dem heraus verlassen switch?

nhgrif
quelle

Antworten:

165

Swift erlaubt beschriftete Anweisungen . Mithilfe einer beschrifteten Anweisung können Sie angeben, welche Steuerungsstruktur Sie verwenden möchten, breakunabhängig davon, wie tief Sie Ihre Schleifen verschachteln (obwohl unter dem Gesichtspunkt der Lesbarkeit im Allgemeinen weniger Verschachtelung besser ist). Dies funktioniert auch für continue.

Beispiel:

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
    }
}
nhgrif
quelle
2

Beschriften Sie die Schleife als OuterLoop und bei Bedarf als Benutzer-Break-Label.

outerLoop: for indexValue in 0..<arr.count-1 {
            if arr[indexValue] > arr[indexValue+1] {
                break outerLoop
            } 
        } 
Chaman Gurjar
quelle