Як розірвати зовнішні петлі з внутрішніх структур, які відповідають на обрив (петлі / перемикач)


78

Як розірвати зовнішній цикл із вкладеної структури, яка відповідає на breakоператор у Swift?

Наприклад:

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

breakБуде тільки мене з switch, і Свіфта, він повинен бути використаний в якості порожніх випадків не допускаються. Як я можу повністю вийти з циклу зсередини switch?

Відповіді:


165

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

2

Позначте цикл як externalLoop і, коли це потрібно, користувач перериває Label: тобто розбиває externalLoop у нашому випадку.

outerLoop: for indexValue in 0..<arr.count-1 {
            if arr[indexValue] > arr[indexValue+1] {
                break outerLoop
            } 
        } 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.