Swift中for in循环中修改i
let array = [1,2,3,4,5]
for var i in 0..<array.count {
print(array[i])
if i == 1 {
i += 2
continue
}
}
为什么这个打印的是
1
2
3
4
5
不是1,2,4,5?
在 Swift 中,for var i in 0..<array.count
创建了一个范围(range),并在每次循环迭代时设置 i
的值。在这个循环中,i
的值是从 0
到 array.count - 1
。虽然你在循环体内对 i
进行了修改(i += 2
),但这并不会影响循环外部的 i
值,因为每次迭代时 i
都会被重新赋值为范围中的下一个值。
代码分析
这里是代码的执行流程:
-
第一次迭代:
i
= 0,打印array[0]
,输出1
。
-
第二次迭代:
i
= 1,打印array[1]
,输出2
。- 然后执行
i += 2
,此时i
的值变为3
。但这并不会影响下一次循环,因为下一次循环会将i
重新赋值为2
(即0..<array.count
下的下一个值)。 continue
语句导致跳过当前迭代的剩余部分,直接进入下一次迭代。
-
第三次迭代:
i
= 2,打印array[2]
,输出3
。
-
第四次迭代:
i
= 3,打印array[3]
,输出4
。
-
第五次迭代:
i
= 4,打印array[4]
,输出5
。
总结
- 在 Swift 的
for-in
循环中,i
的值是在每次迭代开始时重新赋值的,因此在循环中对i
的修改并不会影响到循环的控制行为。 - 如果你想跳过某些元素,可以使用其他方式,比如使用
while
循环,或者在打印时直接判断是否需要跳过某些索引。
示例代码
如果你想要实现 1, 2, 4, 5
的输出,可以使用以下代码:
let array = [1, 2, 3, 4, 5]
var i = 0
while i < array.count {
print(array[i])
if i == 1 {
i += 2
continue
}
i += 1
}
这种方式可以让你更灵活地控制 i
的值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具