我试试这段代码
println(listOf(1, 2, 4).foldRight(0) { total, next ->
total - next
})
我认为它的作用类似于0 + 4 - 2 - 1 = 1。 但它返回3.为什么? 对不起这个愚蠢的问题。
答案 0 :(得分: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
除非我出错了