Cập nhật cho Swift 3 mới nhất (vẫn hoạt động trong Swift 4)
Bạn có thể sử dụng reversed()
phương pháp trên một phạm vi
for i in (1...5).reversed() { print(i) } // 5 4 3 2 1
Hoặc stride(from:through:by:)
phương pháp
for i in stride(from:5,through:1,by:-1) { print(i) } // 5 4 3 2 1
stide(from:to:by:)
tương tự nhưng loại trừ giá trị cuối cùng
for i in stride(from:5,to:0,by:-1) { print(i) } // 5 4 3 2 1
Cập nhật cho Swift 2 mới nhất
Trước hết, phần mở rộng giao thức thay đổi cách reverse
sử dụng:
for i in (1...5).reverse() { print(i) } // 5 4 3 2 1
Stride đã được làm lại trong Xcode 7 Beta 6. Cách sử dụng mới là:
for i in 0.stride(to: -8, by: -2) { print(i) } // 0 -2 -4 -6
for i in 0.stride(through: -8, by: -2) { print(i) } // 0 -2 -4 -6 -8
Nó cũng hoạt động cho Doubles
:
for i in 0.5.stride(to:-0.1, by: -0.1) { print(i) }
Hãy cảnh giác với các so sánh dấu phẩy động ở đây cho các giới hạn.
Bản chỉnh sửa trước đó cho Swift 1.2 : Kể từ Xcode 6 Beta 4, của và ReverseRange không còn tồn tại nữa: [
Nếu bạn chỉ muốn đảo ngược một phạm vi, thì chức năng đảo ngược là tất cả những gì bạn cần:
for i in reverse(1...5) { println(i) } // prints 5,4,3,2,1
Như được đăng bởi 0x7fffffff, có một cấu trúc bước tiến mới có thể được sử dụng để lặp lại và tăng dần theo số nguyên tùy ý. Apple cũng tuyên bố rằng hỗ trợ dấu chấm động sắp ra mắt.
Nguồn từ câu trả lời của anh ấy:
for x in stride(from: 0, through: -8, by: -2) {
println(x) // 0, -2, -4, -6, -8
}
for x in stride(from: 6, to: -2, by: -4) {
println(x) // 6, 2
}