我正在寻找类似于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
的通用名称?
答案 0 :(得分:1)
不确定这是否存在于kotlin中,但这称为scan
。您可以看到this答案以获取更多详细信息(不是kotlin,但是,由于Scala影响了很多,可能您甚至看不到语法差异。)
答案 1 :(得分:1)
您正在寻找名为scan
的函数运算符。
从Kotlin 1.4开始,scan
是present in the standard library。