Decrement index in a loop after Swift C-style loops deprecated Decrement index in a loop after Swift C-style loops deprecated swift swift

Decrement index in a loop after Swift C-style loops deprecated


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,aprint(Array(array.reversed())) // e,d,c,b,a


C-style loops with a fixed increment or decrement can be replacedby 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 whetherthe last element should be included or not.

This is for Swift 2. The syntax changed (again) for Swift 3, seethis answer.


From swift 3.0, The stride(to:by:) method on Strideable has been replaced with a free function, stride(from:to:by:)

for index in stride(from: 10, to: 0, by: -1) {    print(index)}// You can also use stride condition like// {Some Value}.stride(to: 0, by: -1)// for index in 10.stride(to: 0, by: -1) { }