Mise à jour pour le dernier Swift 3 (fonctionne toujours dans Swift 4)
Vous pouvez utiliser la reversed()
méthode sur une plage
for i in (1...5).reversed() { print(i) } // 5 4 3 2 1
Ou stride(from:through:by:)
méthode
for i in stride(from:5,through:1,by:-1) { print(i) } // 5 4 3 2 1
stide(from:to:by:)
est similaire mais exclut la dernière valeur
for i in stride(from:5,to:0,by:-1) { print(i) } // 5 4 3 2 1
Mise à jour pour le dernier Swift 2
Tout d'abord, les extensions de protocole modifient leur reverse
utilisation:
for i in (1...5).reverse() { print(i) } // 5 4 3 2 1
Stride a été retravaillé dans Xcode 7 Beta 6. La nouvelle utilisation est:
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
Cela fonctionne également pour Doubles
:
for i in 0.5.stride(to:-0.1, by: -0.1) { print(i) }
Méfiez-vous de la virgule flottante compare ici pour les limites.
Edition antérieure pour Swift 1.2 : à partir de Xcode 6 Beta 4, par et ReverseRange n'existent plus: [
Si vous cherchez simplement à inverser une plage, la fonction d' inversion est tout ce dont vous avez besoin:
for i in reverse(1...5) { println(i) } // prints 5,4,3,2,1
Tel que publié par 0x7fffffff, il existe une nouvelle construction de pas qui peut être utilisée pour itérer et incrémenter par des entiers arbitraires. Apple a également déclaré que le support en virgule flottante était à venir.
Tiré de sa réponse:
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
}