当我在Playground中使用for循环时,一切都很好,直到我将for循环的第一个参数更改为最大值。(按降序迭代)

这是一个bug吗?还有其他人有吗?

for index in 510..509
{
    var a = 10
}

显示将要执行的迭代次数的计数器一直在滴答作响……


当前回答

在Swift 4及后续版本中

    let count = 50//For example
    for i in (1...count).reversed() {
        print(i)
    }

其他回答

您可以使用reversed()方法轻松反转值。

var i:Int
for i in 1..10.reversed() {
    print(i)
}

reversed()方法反转值。

var sum1 = 0
for i in 0...100{
    sum1 += i
}
print (sum1)

for i in (10...100).reverse(){
    sum1 /= i
}
print(sum1)

如果希望反向遍历数组(array或更一般的任何SequenceType)。您还有一些额外的选项。

首先,您可以reverse()数组并像往常一样遍历它。但是我更喜欢使用enumerate(),因为它输出一个包含对象和它的索引的元组。

这里需要注意的一件事是,以正确的顺序调用它们是很重要的:

For (index, element) in array.enumerate().reverse()

按降序生成索引(这是我通常期望的)。而:

for (index, element) in array.reverse().enumerate()(与NSArray的reverseEnumerator更接近)

反向遍历数组,但输出升序索引。

斯威夫特4.0

for i in stride(from: 5, to: 0, by: -1) {
    print(i) // 5,4,3,2,1
}

如果你想包含to值:

for i in stride(from: 5, through: 0, by: -1) {
    print(i) // 5,4,3,2,1,0
}

这将以相反的顺序递减1。

let num1 = [1,2,3,4,5]
for item in nums1.enumerated().reversed() { 

    print(item.offset) // Print the index number: 4,3,2,1,0
    print(item.element) // Print the value :5,4,3,2,1

}

或者你可以用这个index value属性

let num1 = [1,2,3,4,5]
for (index,item) in nums1.enumerated().reversed() { 

    print(index) // Print the index number: 4,3,2,1,0
    print(item) // Print the value :5,4,3,2,1

}