Scala编程(第3版)

0
(0)

Scala编程(第3版)

作者:【德】MartinOdersky(马丁.奥德斯基)/【美】LexSpoon(莱·斯彭)/【美】BillVenners(比尔·凡纳斯)

出版社:电子工业出版社

出品方:博文视点

译者:高宇翔

出版年:2018-1-1

页数:832页

定价:144.00元

装帧:平装

ISBN:9787121328428

内容简介
······

《Scala编程(第3版)》由直接参与Scala开发的一线人员编写,因而对原理的解读和应用的把握更加值得信赖。《Scala编程(第3版)》面向具有一定编程经验的开发者,目标是让读者能够全面了解和掌握Scala编程语言的核心特性,并能够深入理解Scala这门语言在设计取舍背后的动因。即便是不直接使用Scala或从事一线编程工作的读者,也能从《Scala编程(第3版)》学到大量关于函数式和面向对象的编程概念和技巧。

作者简介
······

Martin Odersky 是Scala 编程语言的缔造者。他是瑞士洛桑理工学院(EPFL)的教授,同时也是Typesafe, Inc.(已更名为Lightbend)的创始人。他的研究方向是编程语言和系统,更具体地说,就是如何将面向对象和函数式编程风格有机地结合在一起。自2001 年起,他的主要精力集中在设计、实现和改进Scala 上。在此之前,他作为Java 泛型的合作设计者参与了Java 编程语言的开发,同时也是当前javac 参考实现的作者。他还是ACM 院士。

Lex Spoon是Semmle Ltd 的一名软件工程师。他在EPFL 作为博士后围绕着Scala 开展了两年的工作。他拥有Georgia Tech 的博士学位,在那里他的主攻方向是动态编程语言的静态分析。除Scala 外,他还帮助开发了各类编程语言,包括动态语言Smalltalk、科学计算语言X10,以及支撑Semmle 的逻辑编程语言。他和他的夫人一起生活在Atlanta,他们有两只猫和一只吉娃娃。

Bill Venners 是Artima Inc 的主席,Artima 开发者网站(ww.artima.com)的发行人,以及Escalate Software, LLC 的联合创始人。他著有《Inside theJava Virtual Machine》,这是一本面向程序员讲解Java 平台架构和内部实现原理的书。他在《JavaWorld》杂志上的专栏很受欢迎,主题涵盖Java 内部实现、面向对象的设计和Jini。Bill 从Jini 社区创立之初便十分活跃,领导了Jini 社区的ServiceUI 项目,其API 成为Jini 服务事实上的UI 标准。他还是ScalaTest 的主要开发者和设计者,一个面向Scala 和Java 开发者的开源测试工具。

译者简介

高宇翔,资深软件开发工程师和系统架构师,同时也是Scala在国内的早期布道者和实践者,曾译有《快学Scala(第2版)》、《快学Scala》(第1版)和《Scala编程》(第1版)等专业书籍。

目录
······

序.XXIV

致谢.XXVI

引言.XXIX

第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 抽象的val413

20.4 抽象的var414

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章 使用XML614

28.1 半结构化数据 614

28.2 XML概览615

28.3 XML字面量 616

28.4 序列化 618

28.5 拆解XML620

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和Java680

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

关于作者 798

评论 ······

第三版了!在Amazon上最热门的Scala书。Scala编程语言的发明者、Typesafe的联合创始人者Martin Odersky的书,内容完整权威,有深刻的见解和指导。讲解上,条理比较学院严谨,通俗讲解比较省而推理式的讲解要多。当然,过了适应期,推理式的讲解更有有效率, 能举一反三。

深入学习一门新的语言,优化数据任务、为智能打基础

相当于官方教程,也确实是scala语言方面最好的书

真正的好书, 比各种第三方的scala书好很多, 第三发的还是 讲不到核心

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册