swift for 循环逆序写法

swift for 循环正序写法很简单:

for i in 0..< num {
    // do something
}

但如果我们简单的将for 循环的正序写法倒过来则会出现错误:

for i in num..>0 {
    // do somethink
}

以上写法会报下面的错误:

Can't form Range with upperBound < lowerBound

解决以上问题,我们可以这样写:

for i in (0..<num).reversed() {
    // do something
}

当然,如果你不满足上面的写法,也可以尝试下面的:

for i in stride(from: 3, through: 0, by: -1) {  
     print(i)  
}
Swift 的 stride 函数返回一个任意可变步长 类型值的序列。可变步长类型是可以设置偏移量的一维标量。
他有两个变种,
  • from,to,最后一个值将会严格小(大)于to的值
stride(from:3, to:0, by:-1) 表示3,2,1
  • from,through,最后一个值将会小(大)于等于through的值
stride(from:3, through:0, by:-1) 表示3,2,1,0

That's All.

Link: Can't form Range with upperBound < lowerBound