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