首页 > 其他 > 详细

Scala的几种高阶函数

时间:2019-08-30 19:23:12      阅读:75      评论:0      收藏:0      [点我收藏+]

 Scala中是函数式编程和Java面向接口编程有很大不同,这些函数在使用方式上并不太难。高阶函数,也就是能够接收另外一个函数作为参数的函数。

假如现在有一个需要是将List集合中的每个元素变为原来的两倍,现在来对比Java方式实现和Scala方式实现区别

Java方式实现,先将集合中的每个元素遍历出来,然后再乘以2,塞到另外一个集合中

ArrayList<Integer> list1 = new ArrayList<Integer>(3, 5, 7);
ArrayList<Integer> list2 = new ArrayList<Integer>();
for (Integer elem : list1) {
list2.add(elem *2 );
}
System.out.println(list2);

 

Scala方式实现

val list1 = List(3, 5, 7)
val list2 = list1.map(multiple) //map高阶函数,能够接收另外一个函数
def multiple(n1: Int): Int = { 
2 * n1
}
println(list2)

可以发现相对于Java的实现方式,Scala中更偏向于使用高阶函数来解决问题,并且也简化了很多。

或许你会有些许疑问,这是什么鬼,这没有简化到哪里呀!的确,但是这里只是小小的演示。  

Scala中常用的高阶函数有如下几种

1.映射函数(map)

map函数

技术分享图片

 

 小注:在Scala中的泛型是表示方法是“[]”,java中的泛型表示方式是“<>”。map函数存在于所有集合类型中,包括在String中。

 现在再看前面的实例,它是这样来执行的

  1.   首先依次遍历list1集合的元素
  2.   将各个元素传递给Multiple函数,计算并返回
  3.   将返回结果放到一个新的集合中,并赋给list2
  4.   输出结果

 为了能够更好的理解,可以尝试自己编写一个List,来模拟原来的List

 

 

 

2.扁平化(flatMap)

3.过滤(filter)

 

4.化简(reduceLeft、reduceRight、reduce)

 

5.折叠(folderLeft、folderRight、folder)

常见使用方法,统计字母出现次数、统计单词出现次数

6.扫描(scanLeft、scanRight)

 

Scala的几种高阶函数

原文:https://www.cnblogs.com/cosmos-wong/p/11436497.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!