Swift C 风格的循环

Swift C-style loop

for (var i = 1; i < 1024; i *= 2) {
    print(i)
}

如何使用 for in 循环完成此操作?

给定的解决方案适用于 += 运算符而不是 *= 运算符。请提供解决方案 *= 谢谢。

在Swift3你可以做到

for f in sequence(first: 1, next: { [=10=] < (1024 / 2) ? [=10=] * 2 : nil }) {
    print(f)
}

sequence 函数的概念在 documentation 中有描述。

打印无限列表很容易,代码就是

for f in sequence(first: 1, next: {[=11=] * 2}) {
    print(f)
}

因为我们希望程序在某个点停止,我们使用三元运算符 ? 在达到最大值后终止列表。 由于我们要打印的最后一个值是 512,因此我们要加倍的最后一个值是 256。对于不满足条件 < (1024 / 2)512,我们有 nil 并因此停止。