En son Swift 3 için Güncelleme (Swift 4'te hala çalışıyor)
Sen kullanabilirsiniz reversed()bir dizi yöntem
for i in (1...5).reversed() { print(i) } // 5 4 3 2 1
Veya stride(from:through:by:)yöntem
for i in stride(from:5,through:1,by:-1) { print(i) } // 5 4 3 2 1
stide(from:to:by:) benzerdir ancak son değeri hariç tutar
for i in stride(from:5,to:0,by:-1) { print(i) } // 5 4 3 2 1
En son Swift 2 için Güncelleme
Her şeyden önce, protokol uzantıları nasıl reversekullanıldığını değiştirir :
for i in (1...5).reverse() { print(i) } // 5 4 3 2 1
Stride, Xcode 7 Beta 6'da yeniden çalışıldı. Yeni kullanım:
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
Şunlar için de çalışır Doubles:
for i in 0.5.stride(to:-0.1, by: -0.1) { print(i) }
Burada sınırlar için kayan nokta karşılaştırmalarına karşı dikkatli olun.
Swift 1.2 için önceki düzenleme : Xcode 6 Beta 4 itibariyle, by ve ReverseRange artık mevcut değil: [
Sadece bir aralığı ters çevirmek istiyorsanız, ihtiyacınız olan tek şey ters işlevdir:
for i in reverse(1...5) { println(i) } // prints 5,4,3,2,1
0x7fffffff tarafından yayınlandığı gibi , gelişigüzel tamsayılarla yineleme ve artış için kullanılabilecek yeni bir adım yapısı vardır. Apple ayrıca kayan nokta desteğinin geldiğini belirtti.
Cevabından kaynaklandı:
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
}