Aggiorna per l'ultimo Swift 3 (funziona ancora in Swift 4)
Puoi usare il reversed()
metodo su un intervallo
for i in (1...5).reversed() { print(i) } // 5 4 3 2 1
O stride(from:through:by:)
metodo
for i in stride(from:5,through:1,by:-1) { print(i) } // 5 4 3 2 1
stide(from:to:by:)
è simile ma esclude l'ultimo valore
for i in stride(from:5,to:0,by:-1) { print(i) } // 5 4 3 2 1
Aggiorna per l'ultima versione di Swift 2
Prima di tutto, le estensioni del protocollo cambiano il modo in cui reverse
vengono utilizzate:
for i in (1...5).reverse() { print(i) } // 5 4 3 2 1
Stride è stato rielaborato in Xcode 7 Beta 6. Il nuovo utilizzo è:
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
Funziona anche per Doubles
:
for i in 0.5.stride(to:-0.1, by: -0.1) { print(i) }
Diffidare dei confronti in virgola mobile qui per i limiti.
Modifica precedente per Swift 1.2 : a partire da Xcode 6 Beta 4, di e ReverseRange non esistono più: [
Se stai solo cercando di invertire un intervallo, la funzione di inversione è tutto ciò di cui hai bisogno:
for i in reverse(1...5) { println(i) } // prints 5,4,3,2,1
Come pubblicato da 0x7fffffff, c'è un nuovo costrutto stride che può essere usato per iterare e incrementare di interi arbitrari. Apple ha anche affermato che il supporto in virgola mobile è in arrivo.
Tratto dalla sua risposta:
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
}