You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中使用for循环反向遍历数组报错失效,是什么原因?

问题原因分析
  • 第一种写法崩溃的核心原因是数组越界:Swift数组索引从0开始计数,你定义的arr有3个元素,合法索引范围是0~2,但你stride的起始值用了arr.count也就是3,访问arr[3]超出了数组的合法边界,所以触发运行时崩溃。
  • 第二种写法的问题是区间定义不合法:Swift的闭区间运算符...要求左侧值必须小于等于右侧值,arr.count...0等价于3...0,属于无效区间,无法正常生成遍历序列。
正确实现方案

方案1:修正stride写法

把起始值调整为最后一个合法索引即可:

for i in stride(from: arr.count - 1, through: 0, by: -1) {
    print(arr[i]) 
}

方案2:直接反向遍历元素(更推荐)

不需要自己处理索引,直接调用数组的reversed()方法获取反向序列,代码更简洁安全:

for element in arr.reversed() {
    print(element)
}

方案3:反向遍历索引的更稳妥写法

如果确实需要用到索引,可以用数组自带的indices属性获取合法索引范围,再反向遍历,避免手动计算索引出错:

for i in arr.indices.reversed() {
    print(arr[i])
}

内容的提问来源于stack exchange,提问作者Jenna2001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:15:03