Update Für das neueste Swift 3 (funktioniert immer noch in Swift 4)
Sie können die reversed()
Methode für einen Bereich verwenden
for i in (1...5).reversed() { print(i) } // 5 4 3 2 1
Oder stride(from:through:by:)
Methode
for i in stride(from:5,through:1,by:-1) { print(i) } // 5 4 3 2 1
stide(from:to:by:)
ist ähnlich, schließt jedoch den letzten Wert aus
for i in stride(from:5,to:0,by:-1) { print(i) } // 5 4 3 2 1
Update Für den neuesten Swift 2
Zunächst ändern Protokollerweiterungen die reverse
Verwendung:
for i in (1...5).reverse() { print(i) } // 5 4 3 2 1
Stride wurde in Xcode 7 Beta 6 überarbeitet. Die neue Verwendung lautet:
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
Es funktioniert auch für Doubles
:
for i in 0.5.stride(to:-0.1, by: -0.1) { print(i) }
Seien Sie vorsichtig bei Gleitkomma-Vergleichen hier für die Grenzen.
Frühere Bearbeitung für Swift 1.2 : Ab Xcode 6 Beta 4 existieren by und ReverseRange nicht mehr: [
Wenn Sie nur einen Bereich umkehren möchten, benötigen Sie lediglich die Umkehrfunktion:
for i in reverse(1...5) { println(i) } // prints 5,4,3,2,1
Wie gepostet 0x7fffffff gibt es ein neues Stride - Konstrukt , das zu wiederholen und Schritt durch beliebige ganze Zahlen verwendet werden kann. Apple gab auch an, dass Gleitkomma-Unterstützung kommt.
Aus seiner Antwort entnommen:
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
}