Can I use 'where' inside a for-loop in swift?
Is there also a possibility to use the 'where' keyword in another place then a switch? Can I use it in a for in loop for example?
I have an array with bools, all with a value, can I do something like this:
var boolArray: [Bool] = []
//(...) set values and do stuff
for value where value == true in boolArray {
doSomething()
}
This would be a lot nicer than use an if, so I am wondering if there is a possibility to use where in combination with a for-loop. Ty for your time.
Solution 1:
In Swift 2, new where
syntax was added:
for value in boolArray where value == true {
...
}
In Pre 2.0 one solution would be to call .filter
on the array before you iterate it:
for value in boolArray.filter({ $0 == true }) {
doSomething()
}
Solution 2:
A normal for-loop
will iterate all elements present in the list. But sometimes we want to iterate only when data satisfy some condition, there we can use where
clause with for -loop
. It's just a replacement of if
condition inside the loop.
For example:
let numbers = [1,2,3,4,5,6,7]
for data in numbers {
if (data % 2 == 0) {
print(data)
}
}
can be rewritten in the simpler way as:
for data in numbers where data % 2 == 0 {
print(data)
}