Aktualizacja dla najnowszego Swift 3 (nadal działa w Swift 4)
Możesz użyć tej reversed()metody na zakresie
for i in (1...5).reversed() { print(i) } // 5 4 3 2 1
Albo stride(from:through:by:)metoda
for i in stride(from:5,through:1,by:-1) { print(i) } // 5 4 3 2 1
stide(from:to:by:) jest podobny, ale wyklucza ostatnią wartość
for i in stride(from:5,to:0,by:-1) { print(i) } // 5 4 3 2 1
Aktualizacja dla najnowszego Swift 2
Przede wszystkim rozszerzenia protokołów zmieniają sposób reverseużycia:
for i in (1...5).reverse() { print(i) } // 5 4 3 2 1
Stride został przerobiony w Xcode 7 Beta 6. Nowe użycie to:
for i in 0.stride(to: -8, by: -2) { print(i) } // 0 -2 -4 -6
for i in 0.stride(through: -8, by: -2) { print(i) } // 0 -2 -4 -6 -8
Działa również w przypadku Doubles:
for i in 0.5.stride(to:-0.1, by: -0.1) { print(i) }
Uważaj na porównania zmiennoprzecinkowe tutaj dla granic.
Wcześniejsza edycja dla Swift 1.2 : od Xcode 6 Beta 4, by i ReverseRange już nie istnieją: [
Jeśli chcesz tylko odwrócić zakres, wystarczy funkcja reverse :
for i in reverse(1...5) { println(i) } // prints 5,4,3,2,1
Jak napisano w 0x7fffffff, istnieje nowa konstrukcja stride, której można użyć do iteracji i inkrementacji przez dowolne liczby całkowite. Apple stwierdził również, że nadchodzi obsługa zmiennoprzecinkowych.
Pochodzi z jego odpowiedzi:
for x in stride(from: 0, through: -8, by: -2) {
println(x) // 0, -2, -4, -6, -8
}
for x in stride(from: 6, to: -2, by: -4) {
println(x) // 6, 2
}