I am reading the book, Professional Swift by Michael Dippery @ 2015. And in the book, on page 25, he writes:
"Both break and continue statements break out of the innermost loops. However, you can label loops, which enables you to break out of an outer loop instead"
let data = [[3,9,44],[52,78,6],[22,91,35]]
let searchFor = 78
var foundVal = false
outer: for ints in data {
inner: for val in ints {
if val == searchFor {
foundVal = true
break outer
}
}
}
if foundVal {
print("Found \(searchFor) in \(data)")
} else {
print("Could not find \(searchFor) in \(data)")
}
however, in playground when I change:
break outer
code to
break inner
The same result occurs:
Found 78 in [[3, 9, 44], [52, 78, 6], [22, 91, 35]]
Is it still necessary to label loops to break out of an outer loop?
Breaking inner and outer loop make difference lets check again with your code by taking one updatedData variable.
let data = [[3,9,44],[52,78,6],[22,91,35]]
let searchFor = 78
var updatedData = [Int]()
var foundVal = false
outer: for ints in data {
inner: for val in ints {
updatedData.append(val)
if val == searchFor {
foundVal = true
break outer
}
}
}
In break outer you will get like :
Found 78 in [[3, 9, 44], [52, 78, 6], [22, 91, 35]]
updated data is [3, 9, 44, 52, 78]
In break inner you will get different updated data :
Found 78 in [[3, 9, 44], [52, 78, 6], [22, 91, 35]]
updated data is [3, 9, 44, 52, 78, 22, 91, 35]
So, you will check that in break inner after the 78 the 6 is not added to the updated data because inner loop is only breaked and again it stared with the next ints.
In break outer the whole loop will be breked.
Hope you will get help from this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With