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

Scala的for循环中如何跳过某一次迭代?

Scala的Range本身是不可变集合,无法直接在遍历中修改迭代变量实现跳过,以下是几种对应实现方案:

  • 方案1:for推导式加守卫(适合跳过固定值的场景)
    如果你的需求只是跳过特定值的迭代,不需要动态跳过多位,直接在for推导式中加过滤条件即可,实现和C语言if(i==2) continue完全一致的效果:
for (i <- 0 until 10 if i != 2) {
  // 执行对应逻辑
}
  • 方案2:使用Iterator手动控制遍历(适合动态调整迭代进度的场景)
    如果需要实现类似你给出的C代码中遇到指定值就修改下标、跳过多位的需求,可以拿到Range的迭代器手动控制遍历进度,灵活性和C语言原生for循环一致:
val iter = (0 until 10).iterator
while (iter.hasNext) {
  var i = iter.next()
  if (i == 2) {
    // 等价于C代码中的i +=1,也可以调用iter.next()直接跳过后续元素
    i += 1
  }
  // 执行对应逻辑
  println(i)
}

以上代码输出为0,1,3,4,5,6,7,8,9,和你给出的C代码执行效果完全一致,如果需要跳过多位,多次调用iter.next()即可。

  • 方案3:提前对集合做过滤转换
    也可以先对原Range做过滤处理,再遍历转换后的集合:
(0 until 10)
  .map(i => if (i == 2) i + 1 else i)
  .foreach { i =>
    // 执行对应逻辑
  }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:48:01