如何快速反向循环迭代?

当我在Playground中使用for循环时,一切正常,直到将for循环的第一个参数更改为最大值。(以降序排列)


这是错误吗?还有其他人吗?


for index in 510..509

{

    var a = 10

}

显示将要执行的迭代次数的计数器一直在计时...

http://img.mukewang.com/5da6b8200001c01013940881.jpg

largeQ
浏览 603回答 3
3回答

红颜莎娜

将反向函数应用于范围以向后迭代:对于Swift 1.2及更早版本:// Print 10 through 1for i in reverse(1...10) {&nbsp; &nbsp; println(i)}它也适用于半开范围:// Print 9 through 1for i in reverse(1..<10) {&nbsp; &nbsp; println(i)}注意:&nbsp; reverse(1...10)创建一个type数组[Int],因此这对于较小的范围可能很好,但是lazy如下所示使用是明智的选择;stride如果范围较大,则考虑接受可接受的答案。为避免创建大数组,请lazy与一起使用reverse()。以下测试在Playground中有效运行,表明它没有创建1万亿Int秒的数组!测试:var count = 0for i in lazy(1...1_000_000_000_000).reverse() {&nbsp; &nbsp; if ++count > 5 {&nbsp; &nbsp; &nbsp; &nbsp; break&nbsp; &nbsp; }&nbsp; &nbsp; println(i)}对于Xcode 7中的Swift 2.0:for i in (1...10).reverse() {&nbsp; &nbsp; print(i)}请注意,在Swift 2.0中,(1...1_000_000_000_000).reverse()类型为ReverseRandomAccessCollection<(Range<Int>)>,因此可以正常工作:var count = 0for i in (1...1_000_000_000_000).reverse() {&nbsp; &nbsp; count += 1&nbsp; &nbsp; if count > 5 {&nbsp; &nbsp; &nbsp; &nbsp; break&nbsp; &nbsp; }&nbsp; &nbsp; print(i)}对于Swift 3.0 reverse(),已重命名为reversed():for i in (1...10).reversed() {&nbsp; &nbsp; print(i) // prints 10 through 1}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS