Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Functional programming 折叠中间结果列表,而不是Kotlin中的最终单个结果_Functional Programming_Kotlin - Fatal编程技术网

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
:(包括示例实现)已经存在一个未决问题。