Programming in Scala

副标题:无

作   者:Martin Odersky,Lex Spoon,Bill Venners著;黄海旭,高宇翔译

分类号:

ISBN:9787121121197

微信扫一扫,移动浏览光盘

简介

   本书介绍了一种新的编程语言,它把面向对象和函数式编程概念有机   地结合为整体,从而形成一种完整统一、语义丰富的新思维体系。本书循   序渐进,由浅入深,经作者精心组织、仔细编排,将语言中的各种概念自   然地铺陈在字里行间。除此之外,本书还包含了大量富有针对性和趣味性   的示例,它们除了提供对语言各个方面的具体演示之外,还从侧面说明了   如何将函数式编程的理念切实并广泛地应用到面向对象编程中。本书面向   的读者是有一定编程经验的开发人员,他们希望能够开拓眼界,并致力于   提高在软件开发各方面的技能。   

目录

  图
  表
  清单
  前言
  致谢
  导读
  第1章 可伸展的语言 3
   1.1 与你一同成长的语言 3
   1.2 是什么让Scala具有可扩展性? 6
   1.3 为什么选择Scala? 8
   1.4 Scala的根源 13
   1.5 小结 14
  第2章 Scala入门初探 15
   2.1第一步 学习使用Scala解释器 15
   2.2第二步 变量定义 16
   2.3第三步 函数定义 18
   2.4第四步 编写Scala脚本 19
   2.5第五步 用while做循环;用if做判断 20
   2.6第六步 用foreach和for做枚举 21
   2.7 小结 22
  第3章 Scala入门再探 23
   3.1第七步 使用类型参数化数组(Array) 23
   3.2第八步 使用列表(List) 25
   3.3第九步 使用元组(Tuple) 28
   3.4第十步 使用集(set)和映射(map) 29
   3.5第十一步 学习识别函数式风格 32
   3.6第十二步 从文件里读取文本行 34
   3.7 小结 36
  第4章 类和对象 37
   4.1 类、字段和方法 37
   4.2 分号推断 40
   4.3 Singleton对象 41
   4.4 Scala程序 43
   4.5 Application特质 45
   4.6 小结 45
  第5章 基本类型和操作 47
   5.1 基本类型 47
   5.2 字面量 48
   5.3 操作符和方法 52
   5.4 数学运算 54
   5.5 关系和逻辑操作 55
   5.6 位操作符 56
   5.7 对象相等性 57
   5.8 操作符的优先级和关联性 58
   5.9 富包装器 60
   5.10 小结 60
  第6章 函数式对象 61
   6.1 类Rational的规格说明书 61
   6.2 创建Rational 62
   6.3 重新实现toString方法 63
   6.4 检查先决条件 63
   6.5 添加字段 64
   6.6 自指向 65
   6.7 辅助构造器 65
   6.8 私有字段和方法 66
   6.9 定义操作符 67
   6.10 Scala的标识符 68
   6.11 方法重载 70
   6.12 隐式转换 71
   6.13 一番告诫 72
   6.14 小结 72
  第7章 内建控制结构 73
   7.1 if表达式 73
   7.2 while循环 74
   7.3 for表达式 76
   7.4 使用try表达式处理异常 80
   7.5 匹配(match)表达式 82
   7.6 不再使用break和continue 83
   7.7 变量范围 84
   7.8 重构指令式风格的代码 87
   7.8 小结 88
  第8章 函数和闭包 89
   8.1 方法 89
   8.2 本地函数 90
   8.3 头等函数 91
   8.4 函数字面量的短格式 93
   8.5 占位符语法 93
   8.6 部分应用函数 94
   8.7 闭包 96
   8.8 重复参数 98
   8.9 尾递归 99
   8.10 小结 102
  第9章 控制抽象 103
   9.1 减少代码重复 103
   9.2 简化客户代码 106
   9.3 柯里化(currying) 107
   9.4 编写新的控制结构 108
   9.5 传名参数(by-name parameter) 110
   9.6 小结 112
  第10章 组合与继承 113
   10.1 二维布局库 113
   10.2 抽象类 114
   10.3 定义无参数方法 114
   10.4 扩展类 116
   10.5 重写方法和字段 117
   10.6 定义参数化字段 118
   10.7 调用超类构造器 119
   10.8 使用override修饰符 120
   10.9 多态和动态绑定 121
   10.10 定义final成员 123
   10.11 使用组合与继承 124
   10.12 实现above、beside和toString 124
   10.13 定义工厂对象 126
   10.14 变高变宽 128
   10.15 把代码都放在一起 129
   10.16 小结 130
  第11章 Scala的层级 131
   11.1 Scala的类层级 131
   11.2 原始类型是如何实现的 134
   11.3 底层类型 135
   11.4 小结 136
  第12章 特质 137
   12.1 特质是如何工作的 137
   12.2 瘦接口对阵胖接口 139
   12.3 样例:长方形对象 140
   12.4 Ordered特质 141
   12.5 特质用来做可堆叠的改变 143
   12.6 为什么不是多重继承? 146
   12.7 特质,用还是不用? 148
   12.8 小结 149
  第13章 包和引用 151
   13.1 包 151
   13.2 引用 153
   13.3 隐式引用 156
   13.4 访问修饰符 156
   13.5 小结 160
  第14章 断言和单元测试 161
   14.1 断言 161
   14.2 Scala里的单元测试 162
   14.3 翔实的失败报告 163
   14.4 使用JUnit和TestNG 164
   14.5 规格测试 166
   14.6 基于属性的测试 167
   14.7 组织和运行测试 168
   14.8 小结 170
  第15章 样本类和模式匹配 171
   15.1 简单例子 171
   15.2 模式的种类 174
   15.3 模式守卫 181
   15.4 模式重叠 181
   15.5 封闭类 182
   15.6 Option类型 184
   15.7 模式无处不在 185
   一个更大的例子 188
   15.9 小结 193
  第16章 使用列表 195
   16.1 列表字面量 195
   16.2 List类型 195
   16.3 构造列表 196
   16.4 列表的基本操作 196
   16.5 列表模式 197
   16.6 List类的一阶方法 198
   16.7 List类的高阶方法 206
   16.8 List对象的方法 212
   16.9 了解Scala的类型推断算法 214
   16.10 小结 216
  第17章 集合类型 217
   17.1 集合库概览 217
   17.2 序列(Sequence) 218
   17.3 集(Set)和映射(Map) 223
   17.4 可变(mutable)集合vs.不可变(immutable)集合 230
   17.5 初始化集合 231
   17.6 元组(Tuple) 234
   17.7 小结 235
  第18章 有状态的对象 237
   什么让对象具有状态? 237
   18.2 可重新赋值的变量和属性 238
   18.3 案例研究:离散事件模拟 241
   为数字电路定制的语言 241
   18.5 Simulation API 243
   18.6 电路模拟 246
   18.7 小结 251
  第19章 类型参数化 253
   19.1 queues函数式队列 253
   19.2 信息隐藏 255
   19.3 变化型注解 258
   19.4 检查变化型注解 261
   19.5 下界 263
   19.6 逆变 264
   19.7 对象私有数据 266
   19.8 上界 267
   19.9 小结 269
  第20章 Abstract Members抽象成员 271
   20.1 抽象成员的快速浏览 271
   20.2 类型成员 272
   20.3 抽象val 272
   20.4 抽象var 273
   20.5 初始化抽象val 273
   20.6 抽象类型 279
   20.7 路径依赖类型 280
   20.8 Enumerations枚举 282
   20.9 案例研究:货币 283
   20.10 小结 290
  第21章 隐式转换和参数 291
   21.1 隐式转换 291
   21.2 隐式操作规则 293
   21.3 隐式转换为期望类型 295
   21.4 转换(方法调用的)接收者 296
   21.5 隐式参数 298
   21.6 视界 302
   21.7 隐式操作调试 304
   21.8 小结 305
  第22章 实现列表 307
   22.1 List类原理 307
   22.2 ListBuffer类 311
   22.3 实际的List类 312
   22.4 外在的函数式(风格) 314
   22.5 小结 314
  第23章 重访for表达式 315
   23.1 For表达式 316
   23.2 皇后问题 317
   23.3 使用for表达式做查询 319
   23.4 for表达式的转译 320
   23.5 反其道而行之 323
   23.6 泛化的for 324
   23.7 小结 325
  第24章 Extractors抽取器 327
   24.1 例子:抽取email地址 327
   24.2 抽取器 328
   24.3 0或1个变量的模式 330
   24.4 变参抽取器 331
   24.5 抽取器和序列模式 333
   24.6 抽取器vs.样本类 333
   24.7 正则表达式 334
   24.8 小结 336
  第25章 注解 337
   25.1 为什么要有注解? 337
   25.2 注解语法 338
   25.3 标准注解 339
   25.4 小结 340
  第26章 使用XML 341
   26.1 半结构化数据 341
   26.2 XML概览 341
   26.3 XML字面量 342
   26.4 序列化 344
   26.5 拆解XML 345
   26.6 反序列化 346
   26.7 加载和保存 347
   26.8 XML的模式匹配 348
   26.9 小结 350
  第27章 使用对象的模块化编程 351
   27.1 问题 351
   27.2 食谱应用 352
   27.3 抽象概念 354
   27.4 把模块拆分为特质 356
   27.5 运行期链接 358
   27.6 跟踪模块实例 359
   27.7 小结 360
  第28章 对象相等性 361
   28.1 Scala中的相等性 361
   28.2 编写相等性方法 361
   28.3 定义带参数类型的相等性 371
   28.4 equals和hashCode的制作方法 374
   28.5 小结 377
  第29章 结合Scala和Java 379
   29.1 在Java中使用Scala 379
   29.2 注解 381
   29.3 存在类型 385
   29.4 小结 387
  第3章 Actor和并发 389
   30.1 天堂中的烦恼 389
   30.2 Actor和消息传递 390
   30.3 将原生线程当作actor 393
   30.4 通过重用线程获得更好的性能 393
   30.5 良好的actor风格 395
   30.6 更长一些的示例:并行离散事件模拟 400
   30.7 小结 412
  第31章 连结符解析 413
   31.1 示例:算术表达式 414
   31.2 运行你的解析器 415
   31.3 基本的正则表达式解析器 416
   31.4 另一个示例:JSON 416
   31.5 解析器输出 418
   31.6 实现连结符解析器 422
   31.7 字符串字面量和正则表达式 427
   31.8 词法分析和解析 428
   31.9 错误报告 429
   31.10 回溯vs. LL(1) 430
   31.11 小结 431
  第32章 GUI编程 433
   32.1第一个Swing应用 433
   32.2 面板和布局 435
   32.3 处理事件 436
   32.4 示例:摄氏/华氏转换器 438
   32.5 小结 440
  第33章 试算表 441
   33.1 可视化框架 441
   33.2 将数据录入和显示分开 443
   33.3 公式 445
   33.4 解析公式 446
   33.5 求值 450
   33.6 操作库 452
   33.7 修改传达 454
   33.8 小结 456
  附录A Unix和Windows的Scala脚本 459
  术语表 461
  参考文献 471
  关于作者 473
  索引 475
  

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Programming in Scala
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon