How to break outer loops from inner structures that respond break (loops/switch)
LoopsNested LoopsSwiftLoops Problem Overview
How to I break an outer loop from within an nested structure that responds to the break
statement in Swift?
For example:
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
}
}
The break
will only get me out of the switch
, and in Swift, it has to be used as empty cases are not allowed. How can I entirely exit the loop from within the switch
?
Loops Solutions
Solution 1 - Loops
Swift allows for labeled statements. Using a labeled statement, you can specify which which control structure you want to break
from no matter how deeply you nest your loops (although, generally, less nesting is better from a readability standpoint). This also works for continue
.
Example:
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
}
}
Solution 2 - Loops
Label the loop as outerLoop and whenever needed user break Label: i.e. break outerLoop in our case.
outerLoop: for indexValue in 0..<arr.count-1 {
if arr[indexValue] > arr[indexValue+1] {
break outerLoop
}
}