web-dev-qa-db-fra.com

Comment briser les boucles externes des structures internes qui répondent à la rupture (boucles / interrupteur)

Comment briser une boucle externe à l'intérieur d'une structure imbriquée qui répond à l'instruction break dans Swift?

Par exemple:

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

Le break ne me sortira que du switch, et dans Swift, il doit être utilisé car les cases vides ne sont pas autorisées. Comment puis-je quitter complètement la boucle depuis switch?

71
nhgrif

Swift permet déclarations étiquetées . À l'aide d'une instruction étiquetée, vous pouvez spécifier la structure de contrôle que vous souhaitez break quelle que soit la profondeur d'imbrication de vos boucles (bien que, généralement, moins d'imbrication soit meilleure du point de vue de la lisibilité). Cela fonctionne également pour continue.

Exemple:

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