Aktualisiert für Swift 3
Die Antwort unten ist eine Zusammenfassung der verfügbaren Optionen. Wählen Sie diejenige, die Ihren Anforderungen am besten entspricht.
reversed
: Zahlen in einem Bereich
Nach vorne
for index in 0..<5 {
print(index)
}
// 0
// 1
// 2
// 3
// 4
Rückwärts
for index in (0..<5).reversed() {
print(index)
}
// 4
// 3
// 2
// 1
// 0
reversed
: Elemente in SequenceType
let animals = ["horse", "cow", "camel", "sheep", "goat"]
Nach vorne
for animal in animals {
print(animal)
}
// horse
// cow
// camel
// sheep
// goat
Rückwärts
for animal in animals.reversed() {
print(animal)
}
// goat
// sheep
// camel
// cow
// horse
reversed
: Elemente mit einem Index
Manchmal wird ein Index benötigt, wenn eine Sammlung durchlaufen wird. Dafür können Sie verwenden enumerate()
, was ein Tupel zurückgibt. Das erste Element des Tupels ist der Index und das zweite Element ist das Objekt.
let animals = ["horse", "cow", "camel", "sheep", "goat"]
Nach vorne
for (index, animal) in animals.enumerated() {
print("\(index), \(animal)")
}
// 0, horse
// 1, cow
// 2, camel
// 3, sheep
// 4, goat
Rückwärts
for (index, animal) in animals.enumerated().reversed() {
print("\(index), \(animal)")
}
// 4, goat
// 3, sheep
// 2, camel
// 1, cow
// 0, horse
Beachten Sie, dass Sie, wie Ben Lachman in seiner Antwort feststellte , dies wahrscheinlich .enumerated().reversed()
eher tun möchten als .reversed().enumerated()
(was die Indexzahlen erhöhen würde).
Schritt: Zahlen
Schritt ist eine Möglichkeit, ohne Verwendung eines Bereichs zu iterieren. Es gibt zwei Formen. Die Kommentare am Ende des Codes zeigen, wie die Bereichsversion aussehen würde (vorausgesetzt, die Inkrementgröße ist 1).
startIndex.stride(to: endIndex, by: incrementSize) // startIndex..<endIndex
startIndex.stride(through: endIndex, by: incrementSize) // startIndex...endIndex
Nach vorne
for index in stride(from: 0, to: 5, by: 1) {
print(index)
}
// 0
// 1
// 2
// 3
// 4
Rückwärts
Durch Ändern der Inkrementgröße auf -1
können Sie rückwärts gehen.
for index in stride(from: 4, through: 0, by: -1) {
print(index)
}
// 4
// 3
// 2
// 1
// 0
Beachten Sie den to
und through
Unterschied.
Schritt: Elemente von SequenceType
In Schritten von 2 vorwärts
let animals = ["horse", "cow", "camel", "sheep", "goat"]
Ich verwende 2
in diesem Beispiel nur, um eine andere Möglichkeit zu zeigen.
for index in stride(from: 0, to: 5, by: 2) {
print("\(index), \(animals[index])")
}
// 0, horse
// 2, camel
// 4, goat
Rückwärts
for index in stride(from: 4, through: 0, by: -1) {
print("\(index), \(animals[index])")
}
// 4, goat
// 3, sheep
// 2, camel
// 1, cow
// 0, horse
Anmerkungen