Scala编程(第4版)

作者
(德)Martin Odersky( 马丁·奥德斯基), Lex Spoon(莱斯·彭), Bill Venners (比尔·文纳斯)
丛书名
出版社
电子工业出版社
ISBN
9787121402722
简要
简介
内容简介书籍计算机书籍 本书由直接参与 Scala 开发的一线人员编写,因而对原理的解读和对应用的把握更加值得信赖。本书面向具有一定编程经验的开发者,目标是让读者能够全面了解和掌握 Scala 编程语言的核心特性,并能够深入理解 Scala 这门语言在设计取舍背后的动因。即便是不直接使用Scala 的读者或非一线编程从业者,也能从本书中学到大量关于函数式和面向对象的编程概念和技巧。
目录
序 .........................................................................................................XXII
致谢 .....................................................................................................XXIV
引言 ....................................................................................................XXVII
第1章 一门可伸缩的语言 ..........................................................................1
1.1 一门按需伸缩的语言 ..................................................................... 2
1.2 是什么让Scala能屈能伸 ................................................................. 7
1.3 为什么要用Scala ...........................................................................11
1.4 Scala寻根 ..................................................................................... 17
1.5 结语 ............................................................................................. 19
第2章 Scala入门 ....................................................................................20
第1步 使用Scala解释器 ..................................................................... 21
第2步 定义变量 ................................................................................. 22
第3步 定义函数 ................................................................................. 24
第4步 编写Scala脚本 ......................................................................... 26
第5步 用while做循环;用if做判断 .................................................... 27
第6步 用foreach和for遍历 ................................................................. 30
结语 ...................................................................................................... 32
第3章 Scala入门(续) ..........................................................................33
第7步 用类型参数化数组 .................................................................. 33
第8步 使用列表 ................................................................................. 38
第9步 使用元组 ................................................................................. 42
第10步 使用集和映射 ........................................................................ 43
第11步   识别函数式编程风格 ............................................................. 48
第12步   从文件读取文本行 ................................................................. 51
结语 ...................................................................................................... 55
第4章 类和对象 ......................................................................................56
4.1 类、字段和方法 ........................................................................... 56
4.2 分号推断 ...................................................................................... 61
4.3 单例对象 ...................................................................................... 62
4.4 Scala应用程序 ............................................................................. 65
4.5 App特质 ....................................................................................... 68
4.6 结语 ............................................................................................. 68
第5章 基础类型和操作 ............................................................................69
5.1 一些基础类型 .............................................................................. 69
5.2 字面量 .......................................................................................... 70
5.3 字符串插值 .................................................................................. 77
5.4 操作符即方法 .............................................................................. 78
5.5 算术操作 ...................................................................................... 81
5.6 关系和逻辑操作 ........................................................................... 83
5.7 位运算操作 .................................................................................. 85
5.8 对象相等性 .................................................................................. 86
5.9 操作符优先级和结合性 ............................................................... 88
5.10 富包装类 .................................................................................... 91
5.11 结语............................................................................................ 91
第6章 函数式对象 ...................................................................................93
6.1 Rational类的规格定义 ................................................................. 93
6.2 构建Rational ................................................................................ 94
6.3 重新实现toString方法 .................................................................. 96
6.4 检查前置条件 .............................................................................. 97
6.5 添加字段 ...................................................................................... 98
6.6 自引用 .........................................................................................100
6.7 辅助构造方法 .............................................................................101
6.8 私有字段和方法 ..........................................................................102
6.9 定义操作符 .................................................................................104
6.10 Scala中的标识符 .......................................................................106
6.11 方法重载 ...................................................................................108
6.12 隐式转换 ...................................................................................111
6.13 注意事项 ...................................................................................112
6.14 结语 ..........................................................................................112
第7章 内建的控制结构 ..........................................................................114
7.1 if表达式 ......................................................................................115
7.2 while循环 ....................................................................................116
7.3 for表达式 ....................................................................................119
7.4 用try表达式实现异常处理 ..........................................................125
7.5 match表达式 ...............................................................................129
7.6 没有break和continue的日子 ........................................................131
7.7 变量作用域 .................................................................................134
7.8 对指令式代码进行重构 ..............................................................137
7.9 结语 ............................................................................................139
第8章 函数和闭包 .................................................................................140
8.1 方法 ............................................................................................140
8.2 局部函数 .....................................................................................142
8.3 一等函数 .....................................................................................144
8.4 函数字面量的简写形式 ..............................................................147
8.5 占位符语法 .................................................................................147
8.6 部分应用的函数 ..........................................................................149
8.7 闭包 ............................................................................................152
8.8 特殊的函数调用形式 ..................................................................156
8.9 尾递归 .........................................................................................159
8.10 结语 ..........................................................................................163
第9章 控制抽象 ....................................................................................164
9.1 减少代码重复 .............................................................................164
9.2 简化调用方代码 ..........................................................................169
9.3 柯里化 .........................................................................................170
9.4 编写新的控制结构 ......................................................................173
9.5 传名参数 .....................................................................................176
9.6 结语 ............................................................................................178
第10章 组合和继承 ...............................................................................179
10.1 一个二维的布局类库 ................................................................179
10.2 抽象类 .......................................................................................180
10.3 定义无参方法 ...........................................................................182
10.4 扩展类 .......................................................................................184
10.5 重写方法和字段 ........................................................................186
10.6 定义参数化字段 ........................................................................188
10.7 调用超类构造方法 ....................................................................189
10.8 使用override修饰符 ..................................................................190
10.9 多态和动态绑定 ........................................................................192
10.10 声明final成员 ..........................................................................195
10.11 使用组合和继承 ......................................................................196
10.12 实现above、beside和toString ..................................................198
10.13 定义工厂对象 ..........................................................................201
10.14 增高和增宽 .............................................................................204
10.15 放在一起 .................................................................................206
10.16 结语 ........................................................................................207
第11章 Scala的继承关系 ......................................................................208
11.1 Scala的类继承关系 ...................................................................208
11.2 基本类型的实现机制 ................................................................212
11.3 底类型(bottom types) ...........................................................215
11.4 定义自己的值类型 ....................................................................216
11.5 结语...........................................................................................219
第12章 特质 .........................................................................................220
12.1 特质如何工作 ...........................................................................220
12.2 瘦接口和富接口 ........................................................................224
12.3 示例:矩形对象 ........................................................................225
12.4 Ordered特质 ..............................................................................227
12.5 作为可叠加修改的特质 .............................................................229
12.6 为什么不用多重继承 ................................................................234
12.7 要特质还是不要特质 ................................................................238
12.8 结语 ..........................................................................................238
第13章 包和引入 ..................................................................................240
13.1 将代码放进包里 ........................................................................240
13.2 对相关代码的精简访问 .............................................................242
13.3 引入 ..........................................................................................246
13.4 隐式引入 ...................................................................................249
13.5 访问修饰符 ...............................................................................250
13.6 包对象 .......................................................................................256
13.7 结语 ..........................................................................................257
第14章 断言和测试 ...............................................................................258
14.1 断言 ..........................................................................................258
14.2 用Scala写测试 ...........................................................................260
14.3 翔实的失败报告 ........................................................................262
14.4 作为规格说明的测试 ................................................................263
14.5 基于性质的测试 ........................................................................267
14.6 组织和运行测试 ........................................................................268
14.7 结语 ..........................................................................................270
第15章 样例类和模式匹配 ....................................................................271
15.1 一个简单的例子 ........................................................................271
15.2 模式的种类 ...............................................................................276
15.3 模式守卫 ...................................................................................286
15.4 模式重叠 ...................................................................................287
15.5 密封类 .......................................................................................289
15.6 Option类型 ................................................................................291
15.7 到处都是模式 ...........................................................................293
15.8 一个复杂的例子 ........................................................................298
15.9 结语 ..........................................................................................306
第16章 使用列表 ..................................................................................307
16.1 List字面量 .................................................................................307
16.2 List类型 ....................................................................................308
16.3 构建列表 ...................................................................................309
16.4 列表的基本操作 ........................................................................309
16.5 列表模式 ...................................................................................310
16.6 List类的初阶方法 .....................................................................312
16.7 List类的高阶方法 .....................................................................324
16.8 List对象的方法 .........................................................................332
16.9 同时处理多个列表 ....................................................................335
16.10 理解Scala的类型推断算法 ......................................................336
16.11 结语 .........................................................................................339
第17章 使用其他集合类 ........................................................................341
17.1 序列 ..........................................................................................341
17.2 集和映射 ...................................................................................345
17.3 在可变和不可变集合类之间选择 ..............................................353
17.4 初始化集合 ...............................................................................356
17.5 元组 ..........................................................................................360
17.6 结语 ..........................................................................................362
第18章 可变对象 ..................................................................................363
18.1 什么样的对象是可变的 .............................................................363
18.2 可被重新赋值的变量和属性 .....................................................366
18.3 案例分析:离散事件模拟 .........................................................369
18.4 用于描述数字电路的语言 .........................................................370
18.5 Simulation API ..........................................................................373
18.6 电路模拟 ...................................................................................377
18.7 结语 ..........................................................................................385
第19章 类型参数化 ...............................................................................386
19.1 函数式队列 ...............................................................................386
19.2 信息隐藏 ...................................................................................390
19.3 型变注解 ...................................................................................393
19.4 检查型变注解 ...........................................................................398
19.5 下界 ..........................................................................................401
19.6 逆变 ..........................................................................................403
19.7 对象私有数据 ...........................................................................406
19.8 上界 ..........................................................................................408
19.9 结语 ..........................................................................................411
第20章 抽象成员 ..................................................................................412
20.1 抽象成员概览 ...........................................................................412
20.2 类型成员 ...................................................................................413
20.3 抽象的val ..................................................................................414
20.4 抽象的var ..................................................................................415
20.5 初始化抽象的val .......................................................................416
20.6 抽象类型 ...................................................................................424
20.7 路径依赖类型 ...........................................................................426
20.8 改良类型 ...................................................................................429
20.9 枚举 ..........................................................................................430
20.10 案例分析:货币 ......................................................................432
20.11 结语 .........................................................................................442
第21章 隐式转换和隐式参数 .................................................................443
21.1 隐式转换 ...................................................................................443
21.2 隐式规则 ...................................................................................446
21.3 隐式转换到一个预期的类型 .....................................................449
21.4 转换接收端 ...............................................................................451
21.5 隐式参数 ...................................................................................455
21.6 上下文界定 ...............................................................................461
21.7 当有多个转换可选时 ................................................................464
21.8 调试 ..........................................................................................466
21.9 结语 ..........................................................................................468
第22章 实现列表 ..................................................................................469
22.1 List类的原理 .............................................................................469
22.2 ListBuffer类 ..............................................................................475
22.3 List类的实践 .............................................................................477
22.4 外部可见的函数式 ....................................................................480
22.5 结语 ..........................................................................................481
第23章 重访for表达式...........................................................................482
23.1 for表达式 ..................................................................................484
23.2 N皇后问题 ................................................................................485
23.3 用for推导式进行查询 ...............................................................488
23.4 用for推导式进行翻译 ...............................................................490
23.5 反过来 .......................................................................................495
23.6 泛化for表达式 ...........................................................................496
23.7 结语 ..........................................................................................498
第24章 深入集合类 ...............................................................................499
24.1 可变和不可变集合 ....................................................................500
24.2 集合的一致性 ...........................................................................502
24.3 Iterable特质 ...............................................................................504
24.4 序列型特质Seq、IndexedSeq和LinearSeq ................................511
24.5 集 ..............................................................................................517
24.6 映射 ..........................................................................................521
24.7 具体的不可变集合类 ................................................................525
24.8 具体的可变集合类 ....................................................................534
24.9 数组 ..........................................................................................540
24.10 字符串 .....................................................................................545
24.11 性能特征 .................................................................................546
24.12 相等性 .....................................................................................548
24.13 视图 ........................................................................................549
24.14 迭代器 .....................................................................................554
24.15 从头创建集合 ..........................................................................561
24.16 Java和Scala集合互转 ..............................................................563
24.17 结语 ........................................................................................565
第25章 Scala集合架构 .........................................................................566
25.1 抽取公共操作 ...........................................................................566
25.2 集成新的集合 ...........................................................................575
25.3 结语 ..........................................................................................600
第26章 提取器 .....................................................................................601
26.1 示例:提取电子邮箱地址 .........................................................601
26.2 提取器 .......................................................................................603
26.3 提取0或1个变量的模式 ............................................................606
26.4 提取可变长度参数的模式 .........................................................608
26.5 提取器和序列模式 ....................................................................610
26.6 提取器和样例类的对比 .............................................................611
26.7 正则表达式 ...............................................................................613
26.8 结语 ..........................................................................................616
第27章 注解 .........................................................................................618
27.1 为什么要有注解 ........................................................................618
27.2 注解的语法 ...............................................................................619
27.3 标准注解 ...................................................................................621
27.4 结语 ..........................................................................................625
第28章 使用XML ..................................................................................626
28.1 半结构化数据 ...........................................................................626
28.2 XML概览 ..................................................................................627
28.3 XML字面量 ..............................................................................628
28.4 序列化 .......................................................................................630
28.5 拆解XML ..................................................................................632
28.6 反序列化 ...................................................................................634
28.7 加载和保存 ...............................................................................635
28.8 对XML做模式匹配 ...................................................................636
28.9 结语 ..........................................................................................640
第29章 用对象实现模块化编程 ..............................................................641
29.1 问题描述 ...................................................................................642
29.2 食谱应用程序 ...........................................................................643
29.3 抽象 ..........................................................................................646
29.4 将模块拆分成特质 ....................................................................650
29.5 运行时链接 ...............................................................................652
29.6 跟踪模块实例 ...........................................................................654
29.7 结语 ..........................................................................................655
第30章 对象相等性 ...............................................................................657
30.1 Scala中的相等性 .......................................................................657
30.2 编写相等性方法 ........................................................................658
30.3 为参数化类型定义相等性 .........................................................672
30.4 如何编写equals和hashCode方法 ...............................................676
30.5 结语 ..........................................................................................680
第31章 结合Scala和Java .....................................................................681
31.1 从Java使用Scala .......................................................................681
31.2 注解 ..........................................................................................684
31.3 通配类型 ...................................................................................690
31.4 同时编译Scala和Java ................................................................692
31.5 Java 8集成 .................................................................................693
31.6 结语 ..........................................................................................697
第32章 Future和并发编程 .....................................................................698
32.1 天堂里的烦恼 ...........................................................................699
32.2 异步执行和Try ..........................................................................700
32.3 使用Future ................................................................................702
32.4 测试Future ................................................................................717
32.5 结语 ..........................................................................................720
第33章 组合子解析 ...............................................................................721
33.1 示例:算术表达式 ....................................................................722
33.2 运行你的解析器 ........................................................................724
33.3 基本的正则表达式解析器 .........................................................725
33.4 另一个示例:JSON ..................................................................726
33.5 解析器输出 ...............................................................................729
33.6 实现组合子解析器 ....................................................................735
33.7 字符串字面量和正则表达式 .....................................................744
33.8 词法分析和解析 ........................................................................745
33.9 错误报告 ...................................................................................746
33.10 回溯和LL(1) ............................................................................748
33.11 结语 .........................................................................................749
第34章 GUI编程 ...................................................................................752
34.1 第一个Swing应用程序 ..............................................................752
34.2 面板和布局 ...............................................................................755
34.3 处理事件 ...................................................................................757
34.4 示例:摄氏/华氏转换器 ...........................................................760
34.5 结语 ..........................................................................................762
第35章 SCells试算表 ...........................................................................764
35.1 可视化框架 ...............................................................................764
35.2 将数据录入和显示分开 .............................................................767
35.3 公式 ..........................................................................................770
35.4 解析公式 ...................................................................................772
35.5 求值 ..........................................................................................777
35.6 操作类库 ...................................................................................780
35.7 变更通知 ...................................................................................783
35.8 结语 ..........................................................................................787
附录 Unix和Windows环境的Scala脚本 .................................................789
术语表 ...................................................................................................790
关于作者 ................................................................................................810

推荐

车牌查询
桂ICP备20004708号-3