Đã cập nhật cho Swift 3
Câu trả lời dưới đây là một bản tóm tắt của các tùy chọn có sẵn. Chọn một trong những phù hợp nhất với nhu cầu của bạn.
reversed: số trong một phạm vi
Ở đằng trước
for index in 0..<5 {
print(index)
}
// 0
// 1
// 2
// 3
// 4
Phía sau
for index in (0..<5).reversed() {
print(index)
}
// 4
// 3
// 2
// 1
// 0
reversed: các yếu tố trong SequenceType
let animals = ["horse", "cow", "camel", "sheep", "goat"]
Ở đằng trước
for animal in animals {
print(animal)
}
// horse
// cow
// camel
// sheep
// goat
Phía sau
for animal in animals.reversed() {
print(animal)
}
// goat
// sheep
// camel
// cow
// horse
reversed: các phần tử có chỉ mục
Đôi khi một chỉ số là cần thiết khi lặp qua một bộ sưu tập. Cho rằng bạn có thể sử dụng enumerate(), trả về một tuple. Phần tử đầu tiên của bộ dữ liệu là chỉ mục và phần tử thứ hai là đối tượng.
let animals = ["horse", "cow", "camel", "sheep", "goat"]
Ở đằng trước
for (index, animal) in animals.enumerated() {
print("\(index), \(animal)")
}
// 0, horse
// 1, cow
// 2, camel
// 3, sheep
// 4, goat
Phía sau
for (index, animal) in animals.enumerated().reversed() {
print("\(index), \(animal)")
}
// 4, goat
// 3, sheep
// 2, camel
// 1, cow
// 0, horse
Lưu ý rằng như Ben Lachman đã lưu ý trong câu trả lời của mình , có lẽ bạn muốn làm .enumerated().reversed()hơn là .reversed().enumerated()(điều này sẽ làm cho số chỉ số tăng lên).
sải chân: số
Stride là cách để lặp mà không cần sử dụng một phạm vi. Có hai hình thức. Các nhận xét ở cuối mã cho biết phiên bản phạm vi sẽ là gì (giả sử kích thước tăng là 1).
startIndex.stride(to: endIndex, by: incrementSize) // startIndex..<endIndex
startIndex.stride(through: endIndex, by: incrementSize) // startIndex...endIndex
Ở đằng trước
for index in stride(from: 0, to: 5, by: 1) {
print(index)
}
// 0
// 1
// 2
// 3
// 4
Phía sau
Thay đổi kích thước gia tăng để -1cho phép bạn đi lùi.
for index in stride(from: 4, through: 0, by: -1) {
print(index)
}
// 4
// 3
// 2
// 1
// 0
Lưu ý tovà throughsự khác biệt.
bước tiến: các yếu tố của SequenceType
Chuyển tiếp theo gia số 2
let animals = ["horse", "cow", "camel", "sheep", "goat"]
Tôi đang sử dụng 2trong ví dụ này chỉ để thể hiện một khả năng khác.
for index in stride(from: 0, to: 5, by: 2) {
print("\(index), \(animals[index])")
}
// 0, horse
// 2, camel
// 4, goat
Phía sau
for index in stride(from: 4, through: 0, by: -1) {
print("\(index), \(animals[index])")
}
// 4, goat
// 3, sheep
// 2, camel
// 1, cow
// 0, horse
Ghi chú