Scala中规约操作reduce与fold函数

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

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

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

reduce

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

  @Testdef testReduce(): Unit ={/*** 测试reduce与fold*/val list=1 to 10val newList=list.reduce(_+_)println(newList)}

输出结果

55

fold

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

  @Testdef testFold(): Unit ={/*** 测试reduce与fold*/val list=1 to 10val newList=list.fold(100)(_+_)println(newList)}

输出结果

155


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部