Diperbarui untuk Swift 3
Jawaban di bawah ini adalah ringkasan dari opsi yang tersedia. Pilih salah satu yang paling sesuai dengan kebutuhan Anda.
reversed: angka dalam suatu rentang
Meneruskan
for index in 0..<5 {
print(index)
}
// 0
// 1
// 2
// 3
// 4
Ke belakang
for index in (0..<5).reversed() {
print(index)
}
// 4
// 3
// 2
// 1
// 0
reversed: elemen dalam SequenceType
let animals = ["horse", "cow", "camel", "sheep", "goat"]
Meneruskan
for animal in animals {
print(animal)
}
// horse
// cow
// camel
// sheep
// goat
Ke belakang
for animal in animals.reversed() {
print(animal)
}
// goat
// sheep
// camel
// cow
// horse
reversed: elemen dengan indeks
Terkadang indeks diperlukan saat iterasi melalui koleksi. Untuk itu Anda dapat menggunakan enumerate(), yang mengembalikan tupel. Elemen pertama dari tuple adalah indeks dan elemen kedua adalah objek.
let animals = ["horse", "cow", "camel", "sheep", "goat"]
Meneruskan
for (index, animal) in animals.enumerated() {
print("\(index), \(animal)")
}
// 0, horse
// 1, cow
// 2, camel
// 3, sheep
// 4, goat
Ke belakang
for (index, animal) in animals.enumerated().reversed() {
print("\(index), \(animal)")
}
// 4, goat
// 3, sheep
// 2, camel
// 1, cow
// 0, horse
Perhatikan bahwa seperti yang dicatat Ben Lachman dalam jawabannya , Anda mungkin ingin melakukan .enumerated().reversed()alih - alih .reversed().enumerated()(yang akan membuat angka indeks meningkat).
melangkah: angka
Langkahnya adalah cara untuk beralih tanpa menggunakan rentang. Ada dua bentuk. Komentar di akhir kode menunjukkan seperti apa versi jangkauan (dengan asumsi ukuran kenaikan adalah 1).
startIndex.stride(to: endIndex, by: incrementSize) // startIndex..<endIndex
startIndex.stride(through: endIndex, by: incrementSize) // startIndex...endIndex
Meneruskan
for index in stride(from: 0, to: 5, by: 1) {
print(index)
}
// 0
// 1
// 2
// 3
// 4
Ke belakang
Mengubah ukuran kenaikan untuk -1memungkinkan Anda untuk mundur.
for index in stride(from: 4, through: 0, by: -1) {
print(index)
}
// 4
// 3
// 2
// 1
// 0
Perhatikan todan throughperbedaan.
langkahnya: elemen SequenceType
Maju dengan selisih 2
let animals = ["horse", "cow", "camel", "sheep", "goat"]
Saya menggunakan 2dalam contoh ini hanya untuk menunjukkan kemungkinan lain.
for index in stride(from: 0, to: 5, by: 2) {
print("\(index), \(animals[index])")
}
// 0, horse
// 2, camel
// 4, goat
Ke belakang
for index in stride(from: 4, through: 0, by: -1) {
print("\(index), \(animals[index])")
}
// 4, goat
// 3, sheep
// 2, camel
// 1, cow
// 0, horse
Catatan