如何在Kotlin中使用foldRight()?

我试试这个代码

println(listOf(1, 2, 4).foldRight(0) { total, next -> total - next }) 

我以为它可以像0 + 4 – 2 – 1 = 1那样工作,但是它会返回3.为什么? 对不起,这个愚蠢的问题。

foldRight通过从右向左累加结果进行工作。 在你的情况下,这是做的

(1-(2-(4-0)))=(1-(2-4))= 1-(-2)= 3

请注意,您的操作具有错误顺序的参数,foldRight会将下一个元素作为第一个参数,将累加器作为第二个参数传递给您。 请参阅https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/fold-right.html 。 如果你交换他们,你会有

(((0-4)-2)-1)= – 7

除非我得到错误的东西