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

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

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

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


当前回答

你可以考虑使用c风格的while循环。这在Swift 3中工作得很好:

var i = 5 
while i > 0 { 
    print(i)
    i -= 1
}

其他回答

反转一个数组只需要一个步骤。reverse()

var arrOfnum = [1,2,3,4,5,6]
arrOfnum.reverse()

Swift向前

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

for i in stride(from: 5, through: 0, by: -1) {
    print(i)
}
//prints 5, 4, 3, 2, 1, 0
var sum1 = 0
for i in 0...100{
    sum1 += i
}
print (sum1)

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

对于Swift 2.0及以上版本,你应该在range collection上应用reverse

for i in (0 ..< 10).reverse() {
  // process
}

在Swift 3.0中已被重命名为.reversed()

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

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

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

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

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

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

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