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
21天学通C语言(第6版)(附光盘) 内容简介 本书译自《Teach Yourself C in 21 Days》第6版,该书的前五版都登上了畅销书排行榜,是初...
小米凭什么开创“小米模式”,火箭般一飞冲天?特斯拉凭什么接班苹果出任最新版“创新大神”,尽享万人追捧?余额宝凭什么一夜间
《守望卡瓦格博》内容简介:2006年,新浪博客开通的第二年,杨旭东注册了“留给自己一份柔软的心情”的个人旅行博客。十余年来,一
《汉朝大历史》内容简介:汉朝何以成为与西罗马并立的两大帝国?汉朝的大一统局面是如何出现的?汉哀帝的断袖之癖,汉朝与四夷的战
无线接入技术 本书特色 本书全面、系统地阐述无线接入网领域的基本原理、基本技术,较充分地反映了当代无线接入领域的*新技术。全书共五章,**章介绍接入网技术概述、...
MatthewcWilson是一名软件开发顾问,STLSoft库的创建者,他为双月刊C/C++UserscJournal撰写关于将C/C++与其他语言和技术进行...
《电商密码》内容简介:本书以真实的跨境电商平台全案为实践基础,结合现今电商行业的特点和需求,从电商平台运营者的角度对电商运
《HeadFirstHTML5Programming(中文版)》内容简介:你可能想创建具有动态性、交互性、包含丰富数据而且互连的Web页面。先等一下,
《MATLAB小波分析超级学习手册》内容简介:本书对小波分析在MATLAB中的应用进行了详细的介绍,全书以小波为主题展开叙述,不仅对小
操作系统 内容简介 本书以UNIX操作系统为背景,介绍了操作系统的基本知识,全书包括九章内容,概述了操作系统的定义、功能、特征、发展历程、主要类型及用户界面,以...
本书纵观了软件开发在不同发展阶段的特点,揭示了当今在很多大型应用软件设计、开发过程中采用的一种部署模式,引出了一种称之为
《汽车使用、维护与保养技术(第3版)》内容简介:本书重点介绍了汽车技术状况、汽车运行材料的合理使用、汽车在特殊条件下的使用、
《史官主书与秦书八体》内容简介:“主书”是史官的基本职能,而“秦书八体”则是指通行于秦代的八种书体。本书由“史官主书研究”
《公关生涯:从小白到国际公关人》内容简介:本书是国际能源巨头亚太区公关负责人近30年的经验总结。作者从跨国公司第一位本土公共
《涂抹与速度》内容简介:九位书法相关专业的博士从历史现象出发,对书法中的种种迷信和陈陈相因的观点进行了崭新的解说,给人启迪
《海标》内容简介:你们,窥破寥廓梦幻的海洋,哪天黄昏会把我们抛弃在城市的讲坛,与那些公共的石头和青铜的葡萄藤饰为伍? 人群啊
《汉字大爆炸:字分•字源•字质》编辑推荐:笔画由人创造,和人类一样同时代表着生命的存在,每一个都被赋予着宇宙中物质存在的信息
《“清”眼看世界:研究生海外社会实践成果集》内容简介:本书梳理了清华大学研究生海外社会实践近五年来的优秀实践成果,精选了来
《安卓传奇:Android缔造团队回忆录》内容简介:本书讲述了Android如何从一个无法引起投资者兴趣的相机软件发展成为安装在全球30亿
C Primer Plus-(第6版)-中文版 本书特色 《c primer plus(第6版)中文版》详细讲解了c语言的基本概念和编程技巧。《c primer...