Оновлення для останнього Swift 3 (все ще працює у Swift 4)
Ви можете використовувати reversed()
метод на діапазоні
for i in (1...5).reversed() { print(i) } // 5 4 3 2 1
Або stride(from:through:by:)
метод
for i in stride(from:5,through:1,by:-1) { print(i) } // 5 4 3 2 1
stide(from:to:by:)
подібний, але виключає останнє значення
for i in stride(from:5,to:0,by:-1) { print(i) } // 5 4 3 2 1
Оновлення для останнього Swift 2
Перш за все, розширення протоколу змінюють спосіб reverse
використання:
for i in (1...5).reverse() { print(i) } // 5 4 3 2 1
Страйд був перероблений у Xcode 7 Beta 6. Нове використання:
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
Він також працює для Doubles
:
for i in 0.5.stride(to:-0.1, by: -0.1) { print(i) }
Будьте уважні до порівнянь з плаваючою точкою тут для меж.
Раніше редагування для Swift 1.2 : на Xcode 6 Beta 4, по і ReverseRange більше не існує: [
Якщо ви просто хочете змінити діапазон, функція реверсу - це все, що вам потрібно:
for i in reverse(1...5) { println(i) } // prints 5,4,3,2,1
Як повідомляє 0x7fffffff , є нова конструкція кроку, яка може бути використана для ітерації та збільшення довільних цілих чисел. Apple також заявила, що йде підтримка з плаваючою комою.
Витягнута з його відповіді:
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
}