【发布时间】:2021-11-05 22:16:52
【问题描述】:
我正在尝试设置一个动态范围,该范围在 for 循环内迭代时会发生变化。又名:从索引跳转到索引。
例如:
func func(c: [Int]) -> Int {
var currentIndex = 0
for i in currentIndex..<c.count
currentIndex += 3 //After changing the currentIndex value, will my "i" start from currentIndex?
}
所以我从 0 开始,然后是 3,然后是 6,依此类推... 当我运行这段代码时,“i”像往常一样总结为 i = 0, i = 1, i = 2...我可以改变迭代范围吗?
【问题讨论】:
-
不,你不能。 – 查看How can I do a Swift for-in loop with a step? 以获得更好的解决方案。
-
您可能正在寻找stride
-
您想任意改变循环计数器,还是每次都添加一个固定量?如果是前者,请改用 while 循环。
-
stride()似乎确实是标准解决方案,但您也可以使用“i*3”,但这隐藏了实现。停止条件 (c.count) 可能需要一些其他计算... (c.count/3) -
谢谢你们的帮助。第一次看到stride,感觉挺方便的。