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

Kotlin标准库是否有返回中间结果的fold类函数?求FP通用名称

关于类似fold但返回所有中间结果的函数

嘿,这个需求太贴合函数式编程的常见场景啦!这类函数在函数式编程领域有个通用名称——scan,而且Kotlin标准库早就内置了这个工具,完全能满足你的需求!

先直接给你匹配需求的代码示例:

// 假设你的f(acc, it)是简单累加逻辑
val res = listOf(1,2,3).scan(0) { acc, it -> acc + it }.drop(1)
// 此时res的值就是 [1,3,6],完美符合你想要的效果

为什么这么写?

Kotlin的scan函数和fold的核心逻辑一致:从指定的初始值出发,依次对集合中的每个元素应用累加函数。但和fold只返回最终累加结果不同,scan会把每一步的累加结果都收集起来,返回一个包含初始值和所有中间结果的列表。比如直接调用listOf(1,2,3).scan(0) { acc, it -> acc + it },得到的结果是[0,1,3,6]——如果你不需要开头的初始值,只需要用drop(1)去掉第一个元素就好。

额外小补充

如果你需要从右往左进行累加(对应foldRight的使用场景),Kotlin还提供了scanRight函数,用法类似,只是遍历集合的顺序相反。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:16:28