List(1,2,3,4)
问题:计算foldRight(1)(_-_) 与foldLeft(1)(_-_)值不一样
首先看foldRight(1)(_-_)计算过程
((( (1-1)-2)-3)-4) 也就是等价与1-1-2-3-4=-9(从左往右减)
然而foldLeft过程是:
List(1,2,3,4):

4 - 1 = 3
3 - 3 = 0
2 - 0 = 2
1 - 2 = -1(答案-1)
注意第一列他是倒着减的,也就是(x-y)转换成(y-x)
下面是源码。可以参照理解
def foldRight[B](z: B)(op: (A, B) => B): B =
reversed.foldLeft(z)((x, y) => op(y, x))

posted on 2018-10-28 09:43  光明顶斗士  阅读(345)  评论(0编辑  收藏  举报