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
并因此停止。
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
并因此停止。