基本介绍
fold函数将上一步返回的值作为函数的第一个参数继续传递参与运算,直到list中的所有元素被遍历。
可以把reduceLeft看做简化版的foldLeft。
如何理解:
def reduceLeft[B >: A](@deprecatedName('f) op: (B, A) => B): B =
if (isEmpty) throw new UnsupportedOperationException("empty.reduceLeft")
else tail.foldLeft[B](head)(op)
大家可以看到. reduceLeft就是调用的foldLeft[B](head),并且是默认从集合的head元素开始操作的。
相关函数:fold,foldLeft,foldRight,可以参考reduce的相关方法理解
应用案例
// 折叠 //等价 List(5,1,2,3,4) 进行操作 // (((5-1) – 2) – 3) – 4 = -5 //等价 List(1,2,3,4,5) 进行操作 // 1-(2- (3- (4-5))) = 3 println(list.foldRight(5)(minus)) //
|