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

Kotlin中遍历全部元素后判断是否存在真值的正确方法

解决方案

首先澄清一个误解:你当前的代码其实已经会遍历所有元素并执行doSomething。因为map对普通Iterable(比如IntRange)是立即执行的,会先把范围内的每个元素都传入doSomething,生成完整的Boolean列表后,再调用any()检查是否存在true。只要你没有使用惰性序列(asSequence()),这种写法就不会提前终止遍历。

如果想更简洁、避免生成中间列表的函数式写法,可以用fold来累积结果:

fun shiftRows(numberOfRows: Int, xRange: IntProgression): Boolean {
    println("shifting row")
    return (1..numberOfRows).fold(false) { acc, idx ->
        acc || doSomething(idx, -1)
    }
}

fold的逻辑很直接:

  • 初始累积值acc设为false
  • 遍历范围内的每个元素,依次执行doSomething
  • 每次用acc || doSomething的返回值更新累积值(只要有一次返回true,后续的acc就会保持true)
  • 遍历完所有元素后,返回最终的累积值,就是你要的“是否有子函数返回true”的结果

这种写法既保证了所有元素都被处理,又符合函数式风格,还避免了额外的列表开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:02:41