Coursera Scala 5-5 List:Reduction of Lists
Coursera Scala 5-5 List:Reduction of Lists
另一個list常用的操作是:連結集合元素。例如sum(list)
ReduceLeft
使用ReduceLeft可以很方便的編寫通用的連結方法
def sum(xs: List[Int]) = (0 :: xs) reduceLeft ((x,y) => x+y)
def product(xs : List[Int]) = (1 :: xs) reduceLeft((x,y) => x*y)
FoldLeft
reduceLeft不能處理Nil 一般用foldLeft代替使用
FoldLeft比ReduceLeft多一個累積器
def sum(xs: List[Int]) = (xs foldLeft 0) (_+_)
def product(xs : List[Int]) = (xs foldLeft 1) (_+_)
以及foldRight
注意foldLeft和foldRight並不一定能通用
原因在於
foldLeft中 累加器在參數左
foldRight中 累加器在參數右
累加器的類型是U List的類型是T
foldLeft是:
U T
U T
U T
而foldRight則是
T U
T U
U T
也就是一個操作符的問題 例如:: 左邊是要T的 而右邊是List[T] 注意一下縮寫的op函數就可以了
foldLeft中累加器是第一個參數 元素是第二個參數
foldRight中累加器是第二個參數 元素是第一個參數
最後更新:2017-04-03 05:39:11