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