如何从响应break的内部结构中打破外部循环(循环/切换)

时间:2014-06-05 00:09:52

标签: loops nested-loops swift

如何在嵌套结构中打破外部循环,该结构响应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
    }
}

break只会让我离开switch,而在Swift中,它必须被用作空案例是不允许的。如何从switch

中完全退出循环

2 个答案:

答案 0 :(得分:152)

Swift允许labeled statements。使用带标签的语句,无论嵌套循环的深度如何,您都可以指定要从哪个控制结构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
    }
}

答案 1 :(得分:0)

将循环标记为“ outerLoop”,并在需要时中断用户标签:即在本例中,中断“ outerLoop”。

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