Scala是一种针对 JVM 的通用的编程语言,用来以简明、优雅、类型安全的方式表示常见的编程模式。它无缝集成了面向对象语言和函数式语言的特性,可以大大提高JAVA程序员的编程效率。Twitter、SAP等知名企业已经开始在一些应用里使用Scala,很多新的程序员也开始学习它。
本书循序渐进地介绍了Scala的函数式编程基础,虽然篇幅短小,却切中要害。读者可以学会使用Scala静态语言的强大功能创建简洁、可扩展、高度可并行的代码。对于多核时代JVM上的并发编程,Scala是绝好的工具,而本书是你必不可少的向导。
第1章 简介 1
1.1 为何选择Scala 1
1.2 何为Scala 3
1.3 函数式编程 7
1.4 本书的内容 9
1.5 本书面向的读者 11
1.6 致谢 11
第2章 起步 13
2.1 下载Scala 13
2.2 安装Scala 13
2.2.1 在Windows上安装Scala 14
2.2.2 在类UNIX系统上安装Scala 14
2.3 让Scala跑起来 15
2.4 命令行上的Scala 16
2.5 把Scala代码当作脚本运行 17
2.5.1 在类UNIX系统上作为脚本运行 17
2.5.2 在Windows上作为脚本运行 18
2.6 在IDE里面运行Scala 18
2.7 编译Scala 19
第3章 Scala步入正轨 20
3.1 把Scala当作简洁的Java 20
3.2 Java基本类型对应的Scala类 23
3.3 元组与多重赋值 23
3.4 字符串与多行原始字符串 25
3.5 自适应的默认做法 26
3.6 运算符重载 27
3.7 Scala带给Java程序员的惊奇 29
3.7.1 赋值的结果 29
3.7.2 Scala的== 30
3.7.3 分号是半可选的 31
3.7.4 默认的访问修饰符 32
3.7.5 默认的访问修饰符以及如何修改 32
3.7.6 Scala的Protected 33
3.7.7 细粒度访问控制 34
3.7.8 避免显式return 35
第4章 Scala的类 37
4.1 创建类 37
4.2 定义字段、方法和构造函数 38
4.3 类继承 41
4.4 单例对象 42
4.5 独立对象和伴生对象 43
4.6 Scala中的static 44
第5章 自适应类型 46
5.1 容器和类型推演 47
5.2 Any类型 49
5.3 关于Nothing的更多情况 50
5.4 Option类型 50
5.5 方法返回类型推演 51
5.6 传递变参 52
5.7 参数化类型的可变性 53
第6章 函数值和闭包 57
6.1 从普通函数迈向高阶函数 57
6.2 函数值 58
6.3 具有多参数的函数值 59
6.4 Curry化 61
6.5 重用函数值 62
6.6 参数的位置记法 64
6.7 Execute Around Method模式 65
6.8 偏应用函数 67
6.9 闭包 68
第7章 Trait和类型转换 70
7.1 Trait 70
7.2 选择性混入 72
7.3 以trait进行装饰 74
7.4 Trait方法的延迟绑定 75
7.5 隐式类型转换 77
第8章 使用容器 81
8.1 常见的Scala容器 81
8.2 使用Set 82
8.3 使用Map 83
8.4 使用List 85
8.5 for表达式 90
第9章 模式匹配和正则表达式 93
9.1 匹配字面量和常量 93
9.2 匹配通配符 94
9.3 匹配元组和列表 94
9.4 类型和卫述句的匹配 96
9.5 case表达式里的模式变量和常量 96
9.6 对XML片段进行模式匹配 98
9.7 使用case类进行模式匹配 98
9.8 使用提取器进行匹配 100
9.9 正则表达式 103
9.10 把正则表达式当做提取器 104
第10章 并发编程 106
10.1 促进不变性 106
10.2 使用Actor的并发 107
10.3 消息传递 110
10.4 Actor类 113
10.5 actor方法 115
10.6 receive和receiveWithin方法 117
10.7 react和reactWithin方法 120
10.8 loop和loopWhile 124
10.9 控制线程执行 125
10.10 在各种接收方法中选择 127
第11章 与Java互操作 128
11.1 在Scala里使用Scala类 128
11.2 在Scala里使用Java类 130
11.3 在Java里使用Scala类 132
11.3.1 有普通函数和高阶函数的Scala类 132
11.3.2 同trait一起工作 134
11.3.3 单例对象和伴生对象 134
11.4 继承类 136
第12章 用Scala做单元测试 138
12.1 使用JUnit 138
12.2 使用ScalaTest 139
12.3 以Canary测试开始 140
12.4 使用Runner 140
12.5 Asserts 142
12.6 异常测试 144
12.7 在测试间共享代码 146
12.7.1 用BeforeAndAfter共享代码 146
12.7.2 用闭包共享代码 147
12.8 FunSuite的函数式风格 148
12.9 用JUnit运行ScalaTest 149
第13章 异常处理 152
13.1 异常处理 152
13.2 注意catch顺序 154
第14章 使用Scala 156
14.1 净资产应用实例 156
14.2 获取用户输入 156
14.3 读写文件 157
14.4 XML,作为一等公民 159
14.5 读写XML 161
14.6 从Web获取股票价格 164
14.7 让净资产应用并发 167
14.8 为净资产应用增加GUI 168
附录A Web资源 178
《格蠹汇编——软件调试案例集锦》以案例形式讨论了使用调试技术解决复杂软件问题的工具和方法。全书共36章,分为四篇。前两篇每
《走!去博物馆学历史·中国国宝篇》内容简介:《走!去博物馆学历史》共2册——中国国宝篇、世界国宝篇,每册共10章,介绍了13个博
大数据丛书模式识别与分类导论/(美)杰夫.多尔蒂 本书特色 模式识别与分类的使用是当今许多自动化电子系统的基础。然而,尽管该领域已出版了许多名著,但该主题仍然非...
《儿童歌曲器乐演奏启蒙——扬琴》内容简介:本书是一套适于乐器初学者使用的简易曲集,包含二胡、古筝、琵琶、扬琴、竹笛、钢琴、
Whatdoesittaketobecomeadoctor,andhowdotheykeepushealthy?Learnhowlongdoctorshavet...
《信息论:基础理论与应用》(第2版)系统地论述了香农信息论基本理论及某些应用问题,基本覆盖了信息论的各个方面的内容。内容包括
本书系统地介绍了数据通信和计算机网络领域的基本内容。在第一版的基础上,修改和增加了新的内容,包括无线和卫星通信、有线电视
五笔字词速查词典第2版 本书特色 1999年五笔教学研究组在北京金桥电脑学校成立成员都是有着丰富教学经验的电脑培训中心的教师,随着全国五笔爱好者的不断加入,成员...
《美国时装画技法教程》讲述了服装设计师们是伟大的、富有创造力的群体。他们通过设计服饰帮助人们创造出新的形象。这些极富创造
《超越CSS:Web设计艺术精髓(修订版)》系统、深入地阐释了网站的设计与实现,帮助读者从设计的角度来使用CSS以达到完美的效果。作
本书是数字图像处理领域的一本新著,是1977年问世的《数字图像处理(第一版)》的重要修订与扩充。较上一版,啬了关于小波变换、
BIO(生态,有机)一词已经越来越多的出现在大众视野。蔬菜水果要吃BIO的,蜂蜜果酱要买BIO的,甚至护肤品都有BIO的。《生态花园
Photoshop CS4平面广告设计经典108例-含2DVD 内容简介 本书是一本Photoshop CS4的平面设计案例教程,也是一本Photoshop商业...
本书深入剖析Photoshop创作技巧与理念的同时,从作品需求的角度出发解读Photoshop影像处理功能及其应用。目录 O热爱图像的石头何
一家4口、9只鸡、1条狗、18年。制衣、种菜、捏陶、采蜜、去旅行……《造物的日常》是早川由美的手绘生活笔记,她在书中将自己根植
《有趣的语文》内容简介:时下,语文教学是最容易收到针砭的学科,语文老师也经常遭人质疑。但在中小学语文教学一线,又确实有一批
《先学会爱自己,再遇见对的你》内容简介:在这本书出版之际,周梵与她先生的婚姻马上要进入第十个年头。从相爱到婚姻的十四年里,
《AJAX安全技术》是一本为专业人士提供预防Ajax安全漏洞一手实践的入门指导书。众所周知,Ajax具备变革互联网的潜力,但危险的新
《CSS+DIV网页样式与布局案例指导》是网页设计的一大改革。DIV分块实现了HTML文档内部结构的划分,CSS层叠样式表则为网页提供了丰
本书首先通过“总体架构”梳理了各个模块的分类、功能和依赖关系,让大家对jQuery的工作原理有大致的印象;进而通过“构造jQuery