• Scala:fold,foldLeft和foldRight区别与联系 reduce


    Scala:fold,foldLeft和foldRight区别与联系

    我们来看看最后一个函数:reduce。使用reduce我们可以处理列表的每个元素并返回一个值。通过使用reduceLeftreduceRight我们可以强制处理元素的方向。(使用reduce方向是不被保证的)
    译者注:reducefold很像,但reduce返回的值的类型必须和列表的元素类型相关(类型本身或其父类),但fold没有这种限制(但与此同时fold必须给定一个初始值),可以说reducefold的一种特殊情况。

    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
  • 相关阅读:
    递归实现全排列问题
    LeetCode
    LeetCode
    连续子元素最大和
    简单模板view调用
    如何清除PHP中不需要的Layout模板
    Model中设置表单验证方法
    数据修改操作
    MVC模式tp框架四中路由形式
    zend Framework的MVC模式的搭建
  • 原文地址:https://www.cnblogs.com/rocky-AGE-24/p/7171525.html
Copyright © 2020-2023  润新知