swift - 改变初始变量的 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 步幅那样以恒定的方式。
解决方案
您正在寻找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
推荐阅读
- python - 导入自己的模块问题:没有名为'xx'的模块
- python - 在 kivymd 上重新运行应用程序后如何保存和加载数据
- python - 在 for 循环后退出
- angular - @angular/material 中的元素未正确显示
- linux - 为什么会出现此错误“运行特权模式时必须在主机命名空间中运行容器”?
- c++ - unordered_map 的 Unordered_map 与对键 C++ 的自定义散列函数?
- python - Pandas:使用 groupby 然后 shift 的更快方法?
- regex - 如何删除ip地址和端口前后的所有内容?
- r - R取消嵌套多列
- gridjs - 如何在每秒更新数据的情况下使用 Grid.js