在Kotlin

时间:2018-05-28 10:03:33

标签: functional-programming kotlin

我正在寻找类似于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的通用名称?

2 个答案:

答案 0 :(得分:1)

不确定这是否存在于kotlin中,但这称为scan。您可以看到this答案以获取更多详细信息(不是kotlin,但是,由于Scala影响了很多,可能您甚至看不到语法差异。)

答案 1 :(得分:1)

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

从Kotlin 1.4开始,scanpresent in the standard library