首页 > 其他 > 详细

问题:计算foldRight(1)(_-_) 与foldLeft(1)(_-_)值不一样

时间:2018-10-28 10:15:22      阅读:172      评论:0      收藏:0      [点我收藏+]

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))

问题:计算foldRight(1)(_-_) 与foldLeft(1)(_-_)值不一样

原文:https://www.cnblogs.com/GuangMingDingFighter/p/9864598.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!