scala的reduceRight和reduceLefft的使用

今天我们来学习Scala中的reduceRight和reduceLefft如何使用,

 

package UerFuntion01

object Array02 {
  def main(args: Array[String]): Unit = {
    //1、折叠,化简:将二元函数引用于集合中的函数
    val list = List(2,3,5,6)
    val left1 = list.reduceLeft(_ - _)
    val left2 = list.reduceLeft((x,y) => x - y)//等价
    println("left1:" + left1)//结果为:-12
    println("left2:" + left2)//结果为:-12
    val right1 = list.reduceRight((x,y) => x - y)
    val right2 = list.reduceRight(_ - _)//等价
    println("rigth1:" + right1)//结果为:-2
    println("rigth2:" + right2)//结果为:-2
    //2、折叠,化简:fold
    val list2 = List(1,3,6,9)
    val list2_fold1 = list2.fold(2)((x,y) => x + y )
    val list2_fold2 = list2.fold(2)(_ + _)
    println("list2_fold1:" + list2_fold1)//结果为:21
    println("list2_fold2:" + list2_fold2)//结果为:21
    //2.1、foldLeft和foldRight有一种缩写方法对应分别是:/:和:\
    val list3 = List(3,6,9)
    val list2_fold3 = (1 /:list3)(_ - _)
    val list2_fold4 = (1 /:list3)((x,y) => x - y )
    println("list2_fold3:" + list2_fold3)//结果为;-17
    println("list2_fold4:" + list2_fold4)//结果为;-17
  }
}

reduceLefft(_ - _)这个函数的执行逻辑如下图所示:

.reduceRight(_ - _)反之同理

fold函数将上一步返回的值作为函数的第一个参数继续传递参与运算,直到list中的所有元素被遍历。

 注意:折叠,化简,扫描这个理解需要结合上面的知识点,扫描,即对某个集合的所有元素做fold操作,但是会把产生的所有中间结果放置于一个集合中保存。

输出结果如下:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值