【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第3小节:动手实战Scala函数式编程(1)
来源:互联网 发布:淘宝女装品牌排行榜 编辑:程序博客网 时间:2024/05/16 06:30
函数式编程的核心特色之一是把函数作为参数传递给函数、在函数内部可以定义函数等。
1,动手实战Scala高阶函数
声明一个List集合实例:
List集合所在的包已经被预定义自动导入,所以此处不需要导入包,同时,这里直接使用List实例化对象,其实是用来List的object对象的apply方法;
我们使用map函数把List中的每个值都乘以2:
在上面的代码中,x表示l中每个一个元素,map对l中的每一个元素进行遍历操作,由于List中只有一种类型的元素,所以我们在执行map操作的时候可以省略掉其类型,如下所示:
List集合中只有一个参数的时候,我们可以去掉参数中的括号:
在只有一个参数的情况下,更简洁和正常的写法如下所示:
常用的高阶函数有map、filter、reduce等,我们在稍后会做介绍。
2,动手实战Scala中的集合
集合主要有List、Set、Tuple、Map等,我们下面以动手实战的方式来学习。
我们在Eclipse这个IDE中创建一个List实例:
此时我们看一下其代码实现:
源代码中说明了其内部是apply的方式来完成实例化的;
同样的方式我们可以实例化Set:
此时也可以看一下Set实例化对象的实现:
接下来我们在命令行终端中看一下集合的操作,首先看一下Set:
可以发现Set中不会存在重复的元素。
下面看一下Tuple的声明和使用:
从上述代码中可以看出源码访问的时候下标是从1开始的;
对Tuple而言,如果只有两个元素的时候还可以使用下述方式创建:
接下来看一下Map的定义:
Map本身使用的是可变参数的方式,所以可以给Map赋多个值:
下面看一下Option类型,Option代表了一个可有可无的值:
Option有两个子类:Some和None,下面我们看Option的使用:
接下来看一下filter的处理:
下面看一下对集合的zip操作:
下面看一下partition对集合的切割操作:
我们可以使用flatten的多集合进行扁平化操作:
flatMap是map和flatten操作的结合,先进行map操作然后进行flatten操作:
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第3小节:动手实战Scala函数式编程(1)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第3小节:动手实战Scala函数式编程(2)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第2小节:动手实战Scala面向对象编程(3)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第2小节:动手实战Scala面向对象编程(1)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第1小节:动手体验Scala(3)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第2小节:动手实战Scala面向对象编程(2)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第1小节:动手体验Scala(2)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第1小节:动手体验Scala(1)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第2节:Spark架构设计(1)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节:Spark架构设计(2)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节:Spark架构设计(1)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第2节:Spark架构设计(2)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第1节:为什么Spark是大数据必然的现在和未来?(2)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第1节:为什么Spark是大数据必然的现在和未来?(1)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群-安装Ubuntu系统(3)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第二步)(3)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第三步)(3)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第四步)(3)
- windows下搭建Android开发环境及其HelloWorld
- 软件测试规范
- Android入门——适配器(Adapter)
- ServletConfig与ServletContext对象详解
- Openstack 性能测试 Rally
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第3小节:动手实战Scala函数式编程(1)
- 【 题集 】 T_T ac - contest - 9
- Android之Adapter用法总结
- windows下使用vim分析代码
- 标准C++读写文件
- Ajax之xmlhttp.open()的用法
- c/c++基础(二十二) C++继承:公有,私有,保护
- 第14周项目6-阅读程序(1,2,3)
- .net 平台AOP