kotlin - 折叠返回中间结果而不仅仅是最后一个结果

标签 kotlin functional-programming fold

我正在寻找一个类似于 fold 的函数,它不仅返回最终结果,还返回所有中间结果。

例如,使用 fold 我可以实现以下示例:

val res = listOf(1,2,3).fold(0, { acc, it -> f(acc, it) })
// res = 6

但我正在寻找类似的东西......

val res = listOf(1,2,3).foo(0, { acc, it -> f(acc, it) })
// res = listOf(1,3,6)

...然后将返回中间结果,而不仅仅是最终总和。

Kotlins stdlib 中是否已包含类似 foo 的函数,或者函数式编程风格中此 foo 的通用名称是什么?

最佳答案

您正在寻找名为 scan 的函数运算符。

从 Kotlin 1.4 开始,扫描present in the standard library .

关于kotlin - 折叠返回中间结果而不仅仅是最后一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50563817/

相关文章:

scala - 在可遍历 View 上执行 foldLeft 时在 Scala 中输入方差错误

scala - 使用关联和交换运算符折叠/减少 future 列表

kotlin - 从列表中收集偶数到奇数元素以在 Kotlin 中进行映射的惯用方法

kotlin - 用协变类型的 lambda 替换 SAM 构造函数

android - Kotlin 协程列表返回空值

android - 单个 android 应用程序中具有多用户数据库的房间

haskell - 连接到 GHC 运行时系统

php - 如何访问 "parent"函数的参数?

c++ - 为什么可以使用额外参数调用 Boost.Bind 函数?

haskell - 我的过滤器实现可以改进吗?