Scala中规约操作reduce与fold函数

规约操作是对容器的元素进行两两运算,将其“规约”为一个值。

常用的规约方法有reduce和fold,两个方法唯一的差别是, reduce是从容器的两个元素开始规约,而fold则是从提供的初始值开始规约。

同样地,对于无序容器而言, fold方法不保证规约时的遍历顺序,如要保证顺序,请使用foldLeft和foldRight,其中,关于匿名函数参数的定义,与reduceLeft和reduceRight完全一样。

reduce

最常见的规约方法是 reduce方法,它接受一个二元函数f作为参数,首先将f作用在某两个元素上并返回一个值,然后再将f作用在上一个返回值和容器的下一个元素上,再返回一个值,依此类推,最后容器中的所有值会被规约为一个值。

  @Test
  def testReduce(): Unit ={
    /**
     * 测试reduce与fold
     */
    val list=1 to 10

    val newList=list.reduce(_+_)

    println(newList)
  }

输出结果

55

fold

与reduce方法非常类似的一个方法是fold方法。fold方法是一个双参数列表的函数,第一个参数列表接受一个规约的初始值,第二个参数列表接受与reduce中一样的二元函数参数。

  @Test
  def testFold(): Unit ={
    /**
     * 测试reduce与fold
     */
    val list=1 to 10

    val newList=list.fold(100)(_+_)

    println(newList)
  }

输出结果

155
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值