2014-06-05 8 views
56

Wie zerbrich ich eine äußere Schleife innerhalb einer verschachtelten Struktur, die auf die break Anweisung in Swift reagiert?So brechen Sie äußere Schleifen von inneren Strukturen, die auf Bruch reagieren (Schleifen/Schalter)

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

Die break wird mich nur raus aus dem switch und in Swift, hat es verwendet werden als leere Fälle sind nicht erlaubt. Wie kann ich die Schleife innerhalb der switch vollständig verlassen?

Antwort

116

Swift ermöglicht labeled statements. Mit einer beschrifteten Anweisung können Sie angeben, welche Kontrollstruktur Sie verwenden möchten, unabhängig davon, wie tief Sie Ihre Schleifen verschachteln (obwohl im Allgemeinen weniger Verschachtelung aus Lesbarkeitsgründen 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 
    } 
}