How would you express a decrementing indexed loop in Swift 3.0, where the syntax below is not valid any more?
for var index = 10 ; index > 0; index-=1{
print(index)
}
// 10 9 8 7 6 5 4 3 2 1
Here is an easier (and more Swifty) approach.
for i in (0 ..< 5).reversed() {
print(i) // 4,3,2,1,0
}
let array = ["a", "b", "c", "d", "e"]
for element in array.reversed() {
print(element) // e,d,c,b,a
}
array.reversed().forEach { print($0) } // e,d,c,b,a
print(Array(array.reversed())) // e,d,c,b,a
C-style loops with a fixed increment or decrement can be replaced
by stride()
:
for index in 10.stride(to: 0, by: -1) {
print(index)
}
// 10 9 8 7 6 5 4 3 2 1
Use stride(to: ...)
or stride(through: ...)
depending on whether
the last element should be included or not.
This is for Swift 2. The syntax changed (again) for Swift 3, see this answer.
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