码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-10-28 11:30:09      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:rev   答案   过程   就是   ever   源码   问题   转换   ldl   

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)(_-_)值不一样

标签:rev   答案   过程   就是   ever   源码   问题   转换   ldl   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!