《Scala编程 第3版》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:(德)马丁·奥德斯基,(美)莱·斯彭,(美)比尔·凡纳斯著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:7121328428
  • 页数:798 页
图书介绍:

第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对象的方法 333

16.9同时处理多个列表 335

16.10理解Scala的类型推断算法 336

16.11结语 339

第17章 使用其他集合类 340

17.1序列 340

17.2集和映射 344

17.3在可变和不可变集合类之间选择 352

17.4初始化集合 355

17.5元组 358

17.6结语 361

第18章 可变对象 362

18.1什么样的对象是可变的? 362

18.2可被重新赋值的变量和属性 365

18.3案例分析:离散事件模拟 368

18.4用于描述数字电路的语言 369

18.5 Simulation API 372

18.6电路模拟 376

18.7结语 384

第19章 类型参数化 385

19.1函数式队列 385

19.2信息隐藏 389

19.3型变注解 392

19.4检查型变注解 397

19.5下界 400

19.6逆变 402

19.7对象私有数据 405

19.8上界 407

19.9结语 410

第20章 抽象成员 411

20.1抽象成员概览 411

20.2类型成员 412

20.3抽象的val 413

20.4抽象的var 414

20.5初始化抽象的val 415

20.6抽象类型 423

20.7路径依赖类型 425

20.8改良类型 428

20.9枚举 429

20.10案例分析:货币 431

20.11结语 441

第21章 隐式转换和隐式参数 442

21.1隐式转换 442

21.2隐式规则 445

21.3隐式转换到一个预期的类型 448

21.4转换接收端 450

21.5隐式参数 454

21.6上下文界定 460

21.7当有多个转换可选时 463

21.8调试 465

21.9结语 467

第22章 实现列表 468

22.1 List类的原理 468

22.2 ListBuffer类 475

22.3 List类的实践 476

22.4外部可见的函数式 479

22.5结语 480

第23章 重访for表达式 481

23.1 for表达式 483

23.2 N皇后问题 484

23.3用for推导式进行查询 487

23.4用for推导式进行翻译 489

23.5反过来 494

23.6泛化for表达式 495

23.7结语 497

第24章 深入集合类 498

24.1可变和不可变集合 499

24.2集合的一致性 501

24.3 Traversable特质 503

24.4 Iterable特质 508

24.5序列型特质Seq、 IndexedSeq和LinearSeq 512

24.6集 517

24.7映射 521

24.8具体的不可变集合类 525

24.9具体的可变集合类 532

24.10数组 539

24.11字符串 544

24.12性能特征 545

24.13相等性 547

24.14视图 548

24.15 迭代器 554

24.16从头创建集合 561

24.17 Java和Scala集合互转 563

24.18结语 564

第25章Scala集合架构 565

25.1集合构建器 565

25.2抽取公共操作 567

25.3集成新的集合 572

25.4结语 588

第26章 提取器 589

26.1示例:提取电子邮箱地址 589

26.2提取器 591

26.3提取0或1个变量的模式 594

26.4提取可变长度参数的模式 596

26.5提取器和序列模式 598

26.6提取器和样例类的对比 599

26.7正则表达式 601

26.8结语 604

第27章 注解 606

27.1为什么要有注解? 606

27.2注解的语法 607

27.3标准注解 609

27.4结语 613

第28章 使用XML 614

28.1半结构化数据 614

28.2 XML概览 615

28.3 XML字面量 616

28.4序列化 618

28.5拆解XML 620

28.6反序列化 622

28.7加载和保存 623

28.8对XML做模式匹配 624

28.9结语 628

第29章 用对象实现模块化编程 629

29.1问题描述 630

29.2食谱应用程序 631

29.3抽象 634

29.4将模块拆分成特质 638

29.5运行时链接 640

29.6跟踪模块实例 642

29.7结语 643

第30章 对象相等性 645

30.1 Scala中的相等性 645

30.2编写相等性方法 646

30.3为参数化类型定义相等性 660

30.4如何编写equals和hashCode方法 664

30.5结语 668

第31章 结合Scala和Java 669

31.1从Java使用Scala 669

31.2注解 672

31.3通配类型 678

31.4同时编译Scala和Java 680

31.5基于Scala 2.12特性的Java 8集成 681

31.6结语 685

第32章Future和并发编程 686

32.1天堂里的烦恼 687

32.2异步执行和Try 688

32.3使用Future 690

32.4测试Future 705

32.5结语 708

第33章 组合子解析 709

33.1示例:算术表达式 710

33.2运行你的解析器 712

33.3基本的正则表达式解析器 713

33.4另一个示例:JSON 714

33.5解析器输出 717

33.6实现组合子解析器 723

33.7字符串字面量和正则表达式 732

33.8词法分析和解析 733

33.9错误报告 734

33.10回溯和LL(1) 736

33.11结语 737

第34章GUI编程 740

34.1第一个Swing应用程序 740

34.2面板和布局 743

34.3处理事件 745

34.4示例:摄氏/华氏转换器 748

34.5结语 750

第35章SCells试算表 752

35.1可视化框架 752

35.2将数据录入和显示分开 755

35.3公式 758

35.4解析公式 760

35.5求值 765

35.6操作类库 768

35.7变更通知 771

35.8结语 775

附录A Unix和Windows环境的Scala脚本 777

术语表 778

关于作者 798