文档章节

【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第3小节(1)

Spark亚太研究院
 Spark亚太研究院
发布于 2014/12/01 22:22
字数 668
阅读 127
收藏 5

函数式编程的核心特色之一是把函数作为参数传递给函数、在函数内部可以定义函数等。 

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亚太研究院
粉丝 68
博文 73
码字总数 35236
作品 0
朝阳
技术主管
Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark

Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机、平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题。图计算正在被广泛地...

Spark亚太研究院
2014/08/29
0
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第五步)(9)

第二步:构造分布式的Spark1.0.2集群 1,下载Scala 2.10.4,具体下载地址: http://www.scala-lang.org/download/2.10.4.html 在Ubuntu机器上Scala会帮助我们自动选择“scala-2.10.4.tgz”进行...

Spark亚太研究院
2014/11/17
0
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第五步)(13)

从控制台可以看到我们的程序成功在集群上运行: Detail for stage 1: Detail for Stage 0: 查看一下Executors的信息: 上述信息表明程序成功在Spark集群上运行。 第四步:基于IDEA构建Spark...

Spark亚太研究院
2014/11/20
0
0
【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第1节②

三、你为什么需要Spark; 你需要Spark的十大理由: 1,Spark是可以革命Hadoop的目前唯一替代者,能够做Hadoop做的一切事情,同时速度比Hadoop快了100倍以上: Logistic regression in Hadoo...

Spark亚太研究院
2014/12/16
0
1
【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第五步)(1)

第一步:构造分布式Hadoop2.2.0集群 1,在Windows 7(本教程中的Spark集群运行的机器是8G的Windows内存)上安装VMware虚拟机(我们安装的是VMware-workstation-full-9.0.2),本教程中的VMwar...

Spark亚太研究院
2014/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[雪峰磁针石博客]软件测试专家工具包1web测试

web测试 本章主要涉及功能测试、自动化测试(参考: 软件自动化测试初学者忠告) 、接口测试(参考:10分钟学会API测试)、跨浏览器测试、可访问性测试和可用性测试的测试工具列表。 安全测试工具...

python测试开发人工智能安全
今天
2
0
JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
2
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
48
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部