Functional programming 折叠中间结果列表,而不是Kotlin中的最终单个结果
我正在寻找一个类似于Functional programming 折叠中间结果列表,而不是Kotlin中的最终单个结果,functional-programming,kotlin,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
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
的通用名称是什么?不确定kotlin中是否存在此功能,但称之为scan
。您可以查看更多详细信息的答案(不是kotlin,但由于Scala对其影响很大,您甚至可能看不到语法差异)。您正在寻找名为scan
的函数运算符
从Kotlin 1.4开始,
scan
就是。谢谢,scan
正是我想要的。但你是对的,科特林似乎落后于此(或者至少不是以这个名字)。但至少我现在知道我在寻找什么。如果它缺少它,那么就实现它。毕竟不是Kotlin语言缺少它,而是标准库。@MarkoTopolnik:没错!但幸运的是,无论如何,在科特林,这很容易做到。出于参考原因:scan
:(包括示例实现)已经存在一个未决问题。