当我在Playground中使用for循环时,一切都很好,直到我将for循环的第一个参数更改为最大值。(按降序迭代)
这是一个bug吗?还有其他人有吗?
for index in 510..509
{
var a = 10
}
显示将要执行的迭代次数的计数器一直在滴答作响……
当我在Playground中使用for循环时,一切都很好,直到我将for循环的第一个参数更改为最大值。(按降序迭代)
这是一个bug吗?还有其他人有吗?
for index in 510..509
{
var a = 10
}
显示将要执行的迭代次数的计数器一直在滴答作响……
当前回答
如果希望反向遍历数组(array或更一般的任何SequenceType)。您还有一些额外的选项。
首先,您可以reverse()数组并像往常一样遍历它。但是我更喜欢使用enumerate(),因为它输出一个包含对象和它的索引的元组。
这里需要注意的一件事是,以正确的顺序调用它们是很重要的:
For (index, element) in array.enumerate().reverse()
按降序生成索引(这是我通常期望的)。而:
for (index, element) in array.reverse().enumerate()(与NSArray的reverseEnumerator更接近)
反向遍历数组,但输出升序索引。
其他回答
如果希望反向遍历数组(array或更一般的任何SequenceType)。您还有一些额外的选项。
首先,您可以reverse()数组并像往常一样遍历它。但是我更喜欢使用enumerate(),因为它输出一个包含对象和它的索引的元组。
这里需要注意的一件事是,以正确的顺序调用它们是很重要的:
For (index, element) in array.enumerate().reverse()
按降序生成索引(这是我通常期望的)。而:
for (index, element) in array.reverse().enumerate()(与NSArray的reverseEnumerator更接近)
反向遍历数组,但输出升序索引。
至于Swift 2.2, Xcode 7.3(2016年6月10日):
for (index,number) in (0...10).enumerate() {
print("index \(index) , number \(number)")
}
for (index,number) in (0...10).reverse().enumerate() {
print("index \(index) , number \(number)")
}
输出:
index 0 , number 0
index 1 , number 1
index 2 , number 2
index 3 , number 3
index 4 , number 4
index 5 , number 5
index 6 , number 6
index 7 , number 7
index 8 , number 8
index 9 , number 9
index 10 , number 10
index 0 , number 10
index 1 , number 9
index 2 , number 8
index 3 , number 7
index 4 , number 6
index 5 , number 5
index 6 , number 4
index 7 , number 3
index 8 , number 2
index 9 , number 1
index 10 , number 0
在Swift 4及后续版本中
let count = 50//For example
for i in (1...count).reversed() {
print(i)
}
对于Swift 2.0及以上版本,你应该在range collection上应用reverse
for i in (0 ..< 10).reverse() {
// process
}
在Swift 3.0中已被重命名为.reversed()
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