我试图了解折叠在 scala 中的工作原理,现在我正在学习左折叠。我有点不知道如何解释以下函数,有人能指出我错的原因吗?谢谢
val p = Array(100,2,7,4)
val r1 = p.foldLeft(0)((x,y)=>y+1) // ?? What will be the value of r1 ?? //5
val r2 = Array(11).foldLeft(0)((y,x)=>y+1) //1
我的理解如下:
对于 r1,我认为 y 应该是累加器,x 应该是数组中的值。因此,该函数试图将 y 一次累加一次。但是为什么这个 val 返回 5 而不是 4?我在哪里理解错误?
对于 r2,y 仍然是累加器,x 是 11。对于这个 val,它计算数组中有多少元素(因为数组中只有 11,所以结果应该是 1)。
我正在寻找可以帮助我解决这个难题的人!太感谢了!