Scala:fold,foldLeft和foldRight区别与联系 reduce
2017-07-14 17:22
579 查看
Scala:fold,foldLeft和foldRight区别与联系
我们来看看最后一个函数:reduce。使用
reduce我们可以处理列表的每个元素并返回一个值。通过使用
reduceLeft和
reduceRight我们可以强制处理元素的方向。(使用
reduce方向是不被保证的)
译者注:
reduce和
fold很像,但
reduce返回的值的类型必须和列表的元素类型相关(类型本身或其父类),但
fold没有这种限制(但与此同时
fold必须给定一个初始值),可以说
reduce是
fold的一种特殊情况。
scala> list1 res51: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) scala> val sum = (x:Int, y:Int) => {println(x,y) ; x + y} sum: (Int, Int) => Int = <function2> scala> list1.reduce(sum) (1,2) (3,3) (6,4) (10,5) (15,6) (21,7) (28,8) (36,9) (45,10) (55,11) (66,12) (78,13) (91,14) (105,15) (120,16) (136,17) (153,18) (171,19) (190,20) res52: Int = 210 scala> list1.reduceLeft(sum) (1,2) (3,3) (6,4) (10,5) (15,6) (21,7) (28,8) (36,9) (45,10) (55,11) (66,12) (78,13) (91,14) (105,15) (120,16) (136,17) (153,18) (171,19) (190,20) res53: Int = 210 scala> list1.reduceRight(sum) (19,20) (18,39) (17,57) (16,74) (15,90) (14,105) (13,119) (12,132) (11,144) (10,155) (9,165) (8,174) (7,182) (6,189) (5,195) (4,200) (3,204) (2,207) (1,209) res54: Int = 210
相关文章推荐
- 【转】Scala:fold,foldLeft和foldRight区别与联系
- Scala:fold,foldLeft和foldRight区别与联系
- Scala:fold,foldLeft和foldRight区别与联系
- Scala:fold,foldLeft和foldRight区别与联系
- Scala:fold,foldLeft和foldRight区别与联系
- fold,foldLeft和foldRight区别与联系
- fold/foldLeft/foldRight区别和联系
- JION,LEFT JION RIGHT JION FULL JION 联系与区别
- Scala深入浅出实战经典:37,List的foldLeft、foldRight、sort操作代码实战
- scala flatMap reduceLeft foldLeft
- List的foldLeft、foldRight、sort操作代码实战之Scala学习笔记-28
- Scala的foldLeft和foldRight
- Scala深入浅出实战经典之 List的foldLeft、foldRight、sort操作代码实战
- scala-37::List的foldLeft、foldRight、sort操作代码实战
- Scala的foldLeft和foldRight
- scala基础38-foldLeft/foldRight/sortWith
- scala - 从合并两个Map说开去 - foldLeft 和 foldRight 还有模式匹配
- Scala :foldLeft foldRight min max
- Scala的foldLeft和foldRight
- 深入了解ORACLE连接:JION,LEFT JION RIGHT JION FULL JION 联系与区别