Swift 3 için güncellendi
Aşağıdaki cevap, mevcut seçeneklerin bir özetidir. İhtiyaçlarınıza en uygun olanı seçin.
reversed
: aralıktaki sayılar
ileri
for index in 0..<5 {
print(index)
}
// 0
// 1
// 2
// 3
// 4
Geriye
for index in (0..<5).reversed() {
print(index)
}
// 4
// 3
// 2
// 1
// 0
reversed
: içindeki elemanlar SequenceType
let animals = ["horse", "cow", "camel", "sheep", "goat"]
ileri
for animal in animals {
print(animal)
}
// horse
// cow
// camel
// sheep
// goat
Geriye
for animal in animals.reversed() {
print(animal)
}
// goat
// sheep
// camel
// cow
// horse
reversed
: indeksli elemanlar
Bazen bir koleksiyon boyunca yineleme yaparken bir indeks gerekebilir. Bunun için enumerate()
bir tuple döndüren kullanabilirsiniz . Grubun ilk elemanı dizindir ve ikinci eleman nesnedir.
let animals = ["horse", "cow", "camel", "sheep", "goat"]
ileri
for (index, animal) in animals.enumerated() {
print("\(index), \(animal)")
}
// 0, horse
// 1, cow
// 2, camel
// 3, sheep
// 4, goat
Geriye
for (index, animal) in animals.enumerated().reversed() {
print("\(index), \(animal)")
}
// 4, goat
// 3, sheep
// 2, camel
// 1, cow
// 0, horse
Ben Lachman'ın cevabında belirttiği gibi , muhtemelen yapmak .enumerated().reversed()
yerine.reversed().enumerated()
(endeks numaralarını artıracak) yapmak istediğinizi unutmayın.
adım: sayılar
Adım, bir aralık kullanmadan yinelemenin yoludur. İki form vardır. Kodun sonundaki yorumlar aralık sürümünün ne olacağını gösterir (artış boyutunun 1 olduğu varsayılarak).
startIndex.stride(to: endIndex, by: incrementSize) // startIndex..<endIndex
startIndex.stride(through: endIndex, by: incrementSize) // startIndex...endIndex
ileri
for index in stride(from: 0, to: 5, by: 1) {
print(index)
}
// 0
// 1
// 2
// 3
// 4
Geriye
Artış boyutunu değiştirmek -1
geriye doğru gitmenizi sağlar.
for index in stride(from: 4, through: 0, by: -1) {
print(index)
}
// 4
// 3
// 2
// 1
// 0
to
Ve through
farkını not edin .
stride: SequenceType öğelerinin öğeleri
2'lik adımlarla ileri sar
let animals = ["horse", "cow", "camel", "sheep", "goat"]
2
Bu örnekte sadece başka bir olasılık göstermek için kullanıyorum .
for index in stride(from: 0, to: 5, by: 2) {
print("\(index), \(animals[index])")
}
// 0, horse
// 2, camel
// 4, goat
Geriye
for index in stride(from: 4, through: 0, by: -1) {
print("\(index), \(animals[index])")
}
// 4, goat
// 3, sheep
// 2, camel
// 1, cow
// 0, horse
notlar