scala outline

​​scala outline​​

scala fold&foldLeft&foldRight

def main(args: Array[String]): Unit = {

val list = List(3, 2, 4)
/*fold方法使用了函数柯里化,存在两个参数列表
第一个参数列表为 : 零值(初始值)
第二个参数列表为: 简化规则*/
val res1: Double = list.fold(10)(_ - _) // 10-3-2-4
val res2: Double = list.foldLeft(10)(_ - _) // 10-3-2-4
val res3: Double = list.foldRight(10)(_ - _) // 先翻转为(4,2,3),然后4-10=-6;2-(-6)=8;3-8=-5
println(res1)
println(res2)
println(res3)
}

结果:

1.0
1.0
-5.0