Scala 实用指南

Scala 实用指南

作者:[美] 文卡特·苏帕拉马尼亚姆

出版社:人民邮电出版社

出版年:2018-7-1

评分:9.0

ISBN:9787115483560

所属分类:行业好书

书刊介绍

内容简介

文卡特·苏帕拉马尼亚姆(Venkat Subramaniam)博士 Agile Developer公司的创始人,同时也在休斯敦大学兼任教职。他已经培训和指导了数千名软件开发者。他也是多本书籍的(合著)作者,其中包括获得2007年度Jolt“生产力大”(Productivity Award)的《高效程序员的45个习惯:敏捷开发修炼之道》一书。

作品目录

第一部分 小试牛刀 1
第1章 探索Scala 3
1.1 Scala的特性 3
1.2 以少胜多 4
1.3 函数式编程 8
1.4 小结 11
第 2章 体验Scala 12
2.1 使用REPL 12
2.2 命令行上的Scala 14
2.3 以独立脚本方式运行Scala代码 15
2.3.1 在类Unix系统上以独立脚本方式运行 15
2.3.2 在Windows上以独立脚本方式运行 16
2.3.3 Scala的IDE支持 16
2.4 编译Scala 17
2.5 小结 17
第3章 从Java到Scala 18
3.1 Scala:简洁的Java 18
3.1.1 减少样板代码 18
3.1.2 更多便利特性 19
3.1.3 转向函数式风格 21
3.2 Java原始类型对应的Scala类 21
3.3 元组和多重赋值 22
3.4 灵活的参数和参数值 24
3.4.1 传递变长参数值 24
3.4.2 为参数提供默认值 25
3.4.3 使用命名参数 26
3.5 隐式参数 27
3.6 字符串和多行原始字符串 29
3.7 字符串插值 30
3.8 合理的约定 32
3.9 操作符重载 33
3.10 Scala与Java的差异 35
3.10.1 赋值的结果 36
3.10.2 Scala的== 36
3.10.3 可有可无的分号 37
3.10.4 避免显式return 38
3.11 默认访问修饰符 39
3.11.1 定制访问修饰 39
3.11.2 Scala的protected 40
3.11.3 细粒度的访问控制 41
3.12 小结 43
第4章 处理对象 44
4.1 创建并使用类 44
4.1.1 创建实例 44
4.1.2 创建类 45
4.1.3 定义字段、方法和构造器 46
4.2 遵循JavaBean惯例 49
4.3 类型别名 50
4.4 扩展一个类 51
4.5 参数化类型 52
4.6 单例对象和伴生对象 54
4.6.1 单例对象 54
4.6.2 独立对象和伴生对象 56
4.6.3 Scala中的static 57
4.7 创建枚举类 59
4.8 包对象 60
4.9 小结 63
第5章 善用类型 64
5.1 类型推断 64
5.1.1 简单类型的类型推断 64
5.1.2 针对泛型和集合的类型推断 66
5.2 基础类型 68
5.2.1 Any类型 68
5.2.2 关于Nothing 69
5.2.3 Option类型 70
5.2.4 Either类型 71
5.3 返回值类型推断 73
5.4 参数化类型的型变 75
5.4.1 协变和逆变 75
5.4.2 支持协变 76
5.4.3 支持逆变 77
5.4.4 定制集合的型变 78
5.5 隐式类型转换 78
5.5.1 隐式函数 79
5.5.2 隐式类 81
5.6 值类 83
5.7 使用隐式转换 86
5.8 小结 88
第二部分 深入Scala 89
第6章 函数值和闭包 91
6.1 常规函数的局限性 91
6.2 可扩展性与高阶函数 92
6.3 具有多个参数的函数值 93
6.4 柯里化 96
6.5 参数的占位符 97
6.6 参数路由 98
6.7 复用函数值 99
6.8 部分应用函数 101
6.9 闭包 102
6.10 Execute Around Method模式 103
6.11 小结 106
第7章 特质 107
7.1 理解特质 107
7.2 选择性混入 110
7.3 使用特质实现装饰器模式 111
7.4 特质中的方法延迟绑定 113
7.5 小结 115
第8章 集合 116
8.1 常见的Scala集合 116
8.2 使用Set 118
8.3 关联映射 119
8.4 不可变列表 121
8.5 方法名约定 124
8.6 for表达式 126
8.7 小结 128
第9章 模式匹配和正则表达式 129
9.1 模式匹配综述 129
9.1.1 匹配字面量和常量 129
9.1.2 匹配通配符 130
9.1.3 匹配元组和列表 131
9.1.4 匹配类型和守卫 132
9.2 case表达式中的模式变量和常量 133
9.3 使用case类进行模式匹配 135
9.4 提取器和正则表达式 138
9.4.1 使用提取器进行模式匹配 138
9.4.2 正则表达式 141
9.4.3 正则表达式作为提取器 142
9.5 无处不在的下划线字符 143
9.6 小结 144
第 10章 处理异常 145
10.1 Scala中的异常 145
10.2 注意catch的顺序 147
10.3 小结 149
第 11章 递归 150
11.1 一个简单的递归 150
11.2 尾调用优化(TCO) 151
11.2.1 常规递归并无优化 152
11.2.2 用尾调用优化来拯救 152
11.2.3 确保尾调用优化 154
11.3 蹦床调用 155
11.4 小结 158
第三部分 Scala中的并发编程 159
第 12章 惰性求值和并行集合 161
12.1 释放惰性 161
12.2 释放严格集合的惰性 164
12.3 终极惰性流 167
12.4 并行集合 170
12.4.1 从顺序集合入手 171
12.4.2 使用并行集合加速 173
12.5 小结 175
第 13章 使用Actor编程 176
13.1 一个顺序耗时问题 176
13.2 曲折的并发之路 178
13.3 创建Actor 179
13.4 Actor和线程 181
13.5 隔离可变性 182
13.6 使用Actor模型进行并发 186
13.7 使用建议 189
13.8 小结 190
第四部分 Scala实战 191
第 14章 和Java进行互操作 193
14.1 在Scala中使用Scala类 193
14.2 在Scala中使用Java类 195
14.3 在Java中使用Scala方法 197
14.4 在Java中使用特质 198
14.5 在Java中使用单例对象和伴生对象 201
14.6 扩展类 203
14.7 小结 204
第 15章 使用Scala创建应用程序 205
15.1 获取用户输入 205
15.2 读写文件 206
15.3 XML作为一等公民 207
15.4 读写XML 210
15.5 从Web获取股票价格 213
15.6 编写并发的资产净值应用程序 216
15.7 小结 217
第 16章 单元测试 218
16.1 使用JUnit 218
16.2 使用ScalaTest 220
16.3 使用Mockito 221
16.3.1 函数式风格的测试 221
16.3.2 创建一个Mock 223
16.4 小结 227
附录A 安装Scala 228
参考文献 230
· · · · · ·

作者简介

文卡特·苏帕拉马尼亚姆(Venkat Subramaniam)博士 Agile Developer公司的创始人,同时也在休斯敦大学兼任教职。他已经培训和指导了数千名软件开发者。他也是多本书籍的(合著)作者,其中包括获得2007年度Jolt“生产力大”(Productivity Award)的《高效程序员的45个习惯:敏捷开发修炼之道》一书。

精彩摘录

不可变性(immutability)是作用在变量上,而不是作用在变量所引用的实例上的。例如,如果我们编写了valbuffer=newStringBuffer(),就不能改变buffer的引用。但是,我们可以使用StringBuffer的方法(如append()方法)来修改所引用的实例。故而,对于一个只有val引用的对象,不能假定它是完全不可变的。另一方面,如果我们使用不可变类如String定义了一个变量,如valstr="hello",就既不能改变引用也不能改变引用所指向的实例的状态。

——引自章节:3.1.2 更多便利特性19

相关推荐

微信二维码