foldLeft
foldRight
相比之前的reduceLeft
,reduceRight
多增加初始值,foldLeft
在集合左边增加元素,foldRight
在集合右边增加元素foldLeft
从左往右遍历,foldRight
从右往左遍历, 不过注意参数顺序仍然是集合元素的正序顺序
/*
*/
@Test
def testFoldLeft() = {
val list = List(4, 5, 6)
/*
fold 指定初始值
与 reduce 区别, 可以理解为在 左侧/右侧 增加了一个元素
返回值与这个新增元素类型相同
*/
// ((1 - 4) - 5) - 6
println(list.foldLeft(1)(_ - _))
// 4 - (5 - (6 - 1))
println(list.foldRight(1)(_ - _))
}