อัปเดตสำหรับ Swift 3
คำตอบด้านล่างนี้เป็นบทสรุปของตัวเลือกที่มี เลือกหนึ่งที่เหมาะกับความต้องการของคุณ
reversed
: ตัวเลขในช่วง
ข้างหน้า
for index in 0..<5 {
print(index)
}
// 0
// 1
// 2
// 3
// 4
ย้อนกลับ
for index in (0..<5).reversed() {
print(index)
}
// 4
// 3
// 2
// 1
// 0
reversed
: องค์ประกอบใน SequenceType
let animals = ["horse", "cow", "camel", "sheep", "goat"]
ข้างหน้า
for animal in animals {
print(animal)
}
// horse
// cow
// camel
// sheep
// goat
ย้อนกลับ
for animal in animals.reversed() {
print(animal)
}
// goat
// sheep
// camel
// cow
// horse
reversed
: องค์ประกอบที่มีดัชนี
บางครั้งดัชนีจำเป็นเมื่อทำการวนซ้ำผ่านคอลเลกชัน เพื่อที่คุณสามารถใช้enumerate()
ซึ่งผลตอบแทน tuple องค์ประกอบแรกของ tuple คือดัชนีและองค์ประกอบที่สองคือวัตถุ
let animals = ["horse", "cow", "camel", "sheep", "goat"]
ข้างหน้า
for (index, animal) in animals.enumerated() {
print("\(index), \(animal)")
}
// 0, horse
// 1, cow
// 2, camel
// 3, sheep
// 4, goat
ย้อนกลับ
for (index, animal) in animals.enumerated().reversed() {
print("\(index), \(animal)")
}
// 4, goat
// 3, sheep
// 2, camel
// 1, cow
// 0, horse
โปรดทราบว่าตามที่ Ben Lachman บันทึกไว้ในคำตอบของเขาคุณอาจต้องการทำ.enumerated().reversed()
มากกว่า.reversed().enumerated()
(ซึ่งจะทำให้ตัวเลขดัชนีเพิ่มขึ้น)
กางเกง: ตัวเลข
สาวเท้าเป็นวิธีการย้ำโดยไม่ต้องใช้ช่วง มีสองรูปแบบ ความคิดเห็นที่ท้ายรหัสแสดงว่ารุ่นของช่วงจะเป็นอย่างไร (โดยสมมติว่าขนาดที่เพิ่มขึ้นคือ 1)
startIndex.stride(to: endIndex, by: incrementSize) // startIndex..<endIndex
startIndex.stride(through: endIndex, by: incrementSize) // startIndex...endIndex
ข้างหน้า
for index in stride(from: 0, to: 5, by: 1) {
print(index)
}
// 0
// 1
// 2
// 3
// 4
ย้อนกลับ
การเปลี่ยนขนาดที่เพิ่มขึ้นเพื่อ-1
ให้คุณย้อนกลับได้
for index in stride(from: 4, through: 0, by: -1) {
print(index)
}
// 4
// 3
// 2
// 1
// 0
สังเกตto
และthrough
ความแตกต่าง
กางเกง: องค์ประกอบของ SequenceType
ส่งต่อโดยการเพิ่มทีละ 2
let animals = ["horse", "cow", "camel", "sheep", "goat"]
ฉันใช้2
ในตัวอย่างนี้เพื่อแสดงความเป็นไปได้อีกอย่าง
for index in stride(from: 0, to: 5, by: 2) {
print("\(index), \(animals[index])")
}
// 0, horse
// 2, camel
// 4, goat
ย้อนกลับ
for index in stride(from: 4, through: 0, by: -1) {
print("\(index), \(animals[index])")
}
// 4, goat
// 3, sheep
// 2, camel
// 1, cow
// 0, horse
หมายเหตุ