首页 > 解决方案 > 改变初始变量的 C 风格 for 循环的快速方法?

问题描述

在许多语言中,for 循环能够i像下面这样改变。这个 for 循环将使 i 每次循环加倍。

for(int i = 0; i < total; i = i + i){}

斯威夫特有for var i in stride(from: 0, to: total, by: N)

for i in 0..<total

但两者都不允许我们i像上面的 C 风格 for 循环那样改变。

有没有一种快速的方法来做到这一点?目标是改变每个循环的速度,而不是像 N 步幅那样以恒定的方式。

标签: swiftloopsfor-loop

解决方案


您正在寻找sequence全局功能。相当于你的

for(int i = 0; i < total; i = i + i)

(我假设您的意思是 1,而不是 0,否则您将永远得到 0,嗯?)是:

let total = 100 // let's say
let seq = sequence(first:1) {$0 >= 100 ? nil : $0 + $0}
for i in seq {
    print(i)
}

输出:

1
2
4
8
16
32
64
128

推荐阅读