您的位置:首页 > 其它

Coursera Scala 5-5 List:Reduction of Lists

2014-07-11 16:52 183 查看



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中累加器是第二个参数 元素是第一个参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: