如何在for循环执行过程中动态修改循环次数
问题原因
你当前的for x in 0..<loopArray.count写法,Swift会在循环启动前一次性计算出范围的上下边界,也就是初始的loopArray.count值(此处为5)。后续数组追加元素后,这个预计算的范围不会重新更新,所以循环只会执行5次。
解决方案
改用while循环,每次迭代都会重新检查数组的count值,从而实现动态响应数组长度变化的效果:
var loopArray: [Int] = [1,2,3,4,5] var x = 0 while x < loopArray.count { print(x) if x == 4 { loopArray.append(6) } x += 1 }
这段代码会依次打印0、1、2、3、4、5——当x=4时数组追加元素,count变为6,x递增到5时,5<6的条件依然成立,会进入循环打印5,之后x变为6,条件不满足,循环终止。
注意事项
实际项目中如果追加元素的条件不确定,要额外注意避免无限循环:比如如果每次循环都会触发元素追加,且没有其他终止逻辑,循环会一直执行下去,需要根据业务场景添加合适的终止判断。
内容的提问来源于stack exchange,提问作者quoteunquote
相关产品推荐
相关产品推荐

