《Scala编程实战》epub+mobi+azw3电子书

Scala编程实战

学习Scala语言,不仅仅意味着熟悉新的API,更重要的是一种思维方式的转变。从原有的面向对象编程(OO)到函数式编程(FP)的思想。本书面向实际的使用场景,提供了大量的Scala实例,同时,也给出底层的原理和相关的参考。对于Scala新手来说这是一本非常不错的入门书,对于老手来说也是一本夯实基础,检视自己所学知识的好书。

本书向读者介绍如何省时省力地使用Scala构建面向对象、函数式、并发应用。书中囊括250个实用技巧以及700多个代码实例,覆盖了开始学习Scala语言、类库和工具时*常见的问题。本书可作为学习使用JVM语言的理想参考书,同时也适用于有经验的Scala开发者。
Alvin Alexander(devdaily.com创始人)使用Scala构建可扩展性高、基于组件的并行和分布式应用,将大量实用经验汇集在本书中。结合真实的使用场景,为读者提供了以下实用技巧:
– 字符串、数值类型和控制结构
– 类、方法、对象、特质和包
– 多种情况下的函数式编程
– Scala丰富的集合类及方法
– 使用Akka类库进行并发
– 使用Scala REPL以及SBT构建工具
– 客户端和服务器端的Web服务
– 与SQL和NoSQL数据库交互
– Scala开发的最佳实践
作者简介
Alvin Alexander,拥有德州农工大学航天工程学位,从1999年开始就是Java/OOP程序员、指导者。他是Valley Programing软件咨询公司创始人,同时在他的个人主页上提供了Java、Scala、Ruby等编程语言的教程。
目录
前言…………………………………………..1
第1章字符串……….. 11
1.1 测试字符串的相等性…………………………….14
1.2 创建多个字符串…………………………………..16
1.3 分隔字符串………………………………………….17
1.4 字符串中的变量代换…………………………….19
1.5 挨个处理字符串中的字符………………………23
1.6 字符串中的查找模式…………………………….27
1.7 字符串中的替换模式…………………………….30
1.8 抽取String 中模式匹配的部分…………………31
1.9 访问字符串中的一个字符………………………33
1.10 在String 类中添加自定义的方法……………34
第2章数值…………..39
2.1 从字符串到数值…………………………………..40
2.2 数值类型转换………………………………………44
2.3 重载默认数值类型………………………………..45
2.4 替代++ 和--………………………………………47
2.5 浮点数的比较………………………………………49
2.6 处理大数……………………………………………..51
2.7 生成随机数………………………………………….53
2.8 创建一个数值区间、列表或者数组…………55
2.9 格式化数值和金额………………………………..57
第3章控制结构…….60
3.1 for 和foreach 循环………………………………….61
3.2 在for 循环中使用多个计数器………………….67
3.3 在for 循环中嵌入if 语句(卫语句)…………69
3.4 创建for 表达式(for/yield 组合)…………….70
3.5 实现break 和continue……………………………..72
3.6 像三元运算符一样使用if……………………….77
3.7 像switch 语句一样使用匹配表达式………….78
3.8 一条case 语句匹配多个条件……………………83
3.9 将匹配表达式的结果赋值给变量……………84
3.10 访问匹配表达式缺省case 的值………………84
3.11 在匹配表达式中使用模式匹配……………..85
3.12 在匹配表达式中使用Case 类………………..92
3.13 给Case 语句添加if 表达式(卫语句)…….93
3.14 使用匹配表达式替换isInstanceOf………….94
3.15 在匹配表达式中使用List……………………..95
3.16 用try/catch 匹配一个或者更多的异常……97
3.17 在try/catch/finally 块中使用变量前定义变量…………………….98
3.18 创建自定义控制结构…………………………100
第4章类和属性…..103
4.1 创建一个主构造函数…………………………..104
4.2 控制构造函数字段的可见性…………………108
4.3 定义辅助构造函数……………………………… 111
4.4 定义私有的主构造函数……………………….115
4.5 设置构造函数参数的默认值…………………116
4.6 覆写默认的访问和修改方法…………………118
4.7 阻止生成getter 和setter 方法………………….121
4.8 将代码块或者函数赋给字段…………………123
4.9 设置未初始化的var 字段类型………………..125
4.10 在继承类时处理构造函数参数……………127
4.11 调用父类的构造函数…………………………129
4.12 何时使用抽象类………………………………..131
4.13 在抽象基类(或者特质) 里定义属性……..133
4.14 用Case 类生成模板代码……………………..137
4.15 定义一个equals 方法(对象的相等性)..141
4.16 创建内部类………………………………………144
第5章方法…………147
5.1 控制方法作用域…………………………………148
5.2 调用父类的方法…………………………………152
5.3 方法参数默认值…………………………………154
5.4 使用参数名………………………………………..157
5.5 定义一个返回多个值(Tuples) 的方法……..159
5.6 调用getter/setter 方法时不使用括号……….160
5.7 创建接受变参的方法…………………………..162
5.8 方法的异常声明………………………………..164
5.9 支持链式调用编码风格……………………….166解决办法…167
第6章对象…………170
6.1 对象的强制转换…………………………………171
6.2 Java.class 的Scala 等价类………………………173
6.3 确定对象所属的类………………………………174
6.4 用Object 启动一个应用………………………..175
6.5 用object 创建单例………………………………..177
6.6 用伴生类创建静态成员……………………….178
6.7 将通用代码放入包对象……………………….180
6.8 不使用new 关键字创建对象实例……………183
6.9 在Scala 中用apply 方法实现工厂方法……..187
第7章包和导入…..190
7.1 花括号风格的包记号法……………………….191
7.2 引入一个或多个成员…………………………..192
7.3 在导入时重命名成员…………………………..194
7.4 在引入时隐藏一个类…………………………..195
7.5 使用静态导入…………………………………….196
7.6 在任意地方使用Import 语句………………….197
第8章特质…………200
8.1 特质用作接口…………………………………….200
8.2 使用特质中的抽象字段和实际字段……….203
8.3 像抽象类一样使用特质……………………….204
8.4 简单混入特质…………………………………….205
8.5 通过继承来限制特质的使用范围………….206
8.6 限定特质只可用于指定类型的子类……….208
8.7 保证特质只能被添加到只有一个特定方法的类型……………………..210
8.8 为对象实例中添加特质……………………….211
8.9 像特质一样继承一个Java 接口………………212
第9章函数式编程..214
9.1 使用函数字面量(匿名函数)……………..215
9.2 将函数作为变量…………………………………216
9.3 定义接受简单函数作为参数的方法……….220
9.4 更多复杂的函数…………………………………222
9.5 使用闭包……………………………………………226
9.6 使用部分应用函数………………………………231
9.7 创建返回函数的函数…………………………..232
9.8 创建部分应用函数………………………………235
9.9 一个真实的例子…………………………………239
第10 章集合……….242
10.1 理解集合的层级结构…………………………243
10.2 选择一个集合类………………………………..247
10.3 用一个集合方法解决一个问题……………252
10.4 理解集合的性能………………………………..258
10.5 在创建集合时声明一个类型……………….260
10.6 理解可变变量与不可变集合……………….262
10.7 将Vector“变为”不可变序列…………….263
10.8 把ArrayBuffer 作为可变序列的第一选择265
10.9 用foreach 遍历一个集合……………………..267
10.10 用for 循环遍历一个集合……………………269
10.11 使用zipWithIndex 或者zip 创建循环计数器……………………272
10.12 迭代器的使用…………………………………275
10.13 用for/yield 实现集合间的转换……………276
10.14 用map 实现集合的变换…………………….279
10.15 展平列表的列表与扁平化问题………….281
10.16 map,flatten 和flatMap 的组合……………283
10.17 用filter 过滤一个集合………………………285
10.18 从集合中提取元素序列……………………287
10.19 序列的分割(groupBy 、partition 等)..289
10.20 用reduce 和fold 方法遍历集合……………291
10.21 从序列中提取不重复的元素…………….296
10.22 合并序列集合…………………………………297
10.23 用zip 将两个序列集合合并为一对………300
10.24 在集合上创建一个惰性视图……………..301
10.25 利用Range 创建集合…………………………305
10.26 创建使用枚举…………………………………307
10.27 当需要一堆元素时使用元组……………..308
10.28 集合排序………………………………………..310
10.29 通过mkString 将集合转换成字符串……313
第11 章列表、数组、映射、集及其他……………………..315
11.1 创建和填充列表的不同方式……………….316
11.2 创建可变List…………………………………….318
11.3 为List 添加元素…………………………………319
11.4 从List(或者ListBuffer)中删除元素…..321
11.5 合并或连接列表………………………………..323
11.6 使用List 的懒惰版本,Stream……………..324
11.7 创建和更新数组的不同方式……………….326
11.8 创建大小可变的数组(ArrayBuffer)….328
11.9 删除Array 和ArrayBuffer 的元素…………..329
11.10 数组排序………………………………………..331
11.11 创建多维数组………………………………….332
11.12 创建映射………………………………………..334
11.13 选择一种Map 实现……………………………336
11.14 为可变映射添加、更新或删除元素……338
11.15 为不可变映射添加、更新或删除元素..340
11.16 访问映射的值………………………………….342
11.17 遍历映射………………………………………..344
11.18 从映射中获得所有的键或者值………….345
11.19 反转键值………………………………………..346
11.20 测试映射中键/值的存在……………………347
11.21 过滤映射………………………………………..348
11.22 根据键或者值对映射排序…………………350
11.23 找到映射中最大的键或者值……………..354
11.24 给集添加元素………………………………….355
11.25 从集中删除元素………………………………357
11.26 使用可排序集………………………………….359
11.27 使用队列………………………………………..360
11.28 使用栈……………………………………………362
11.29 使用Range………………………………………365
第12 章文件和进程367
第13 章Actors 和并发…………………………………………..401
第14 章命令行任务440
第15 章Web 服务…475
第16 章数据库和持久化……………………………………….510
第17 章与Java 交互…………………………………………….531
第18 章简单构建工具(SBT)………………………………551
第19 章类型……….589
第20 章惯用法…….612
收起全部↑
前言/序言
译者序
刚开始走入工作岗位的时候,当时公司多数的项目都在使用Ruby语言,接触不久便深深地爱上了Ruby的灵活和可读性。2013年时,客户决定拆分一个遗留系统,并且尝试用基于Scala语言的Play框架去搭建微服务。第一次接触的时候,感觉非常震惊,因为这门基于JVM的语言,除了保留了Java静态检查的好处,还兼有OOP和FP的能力,并且写起来让我找到了Ruby的感觉。我们从Scala中受益匪浅,后续的微服务,都是采用基于Scala语言的框架,Unfinagled和Unfilterd,都取得了成功。我有理由相信,Scala将成为整条业务线的技术选择的标准。
从大的范围来看,越来越多的公司也开始采用Scala,如Twitter、LinkedIn、Coursera等。我们耳熟能详的一些大数据处理平台,如Storm和Spark,也都是基于Scala语言去构建的。TypeSafe的官网给出了很多用户案例。从这些例子我们可以看出,Scala的未来不可限量,值得我们投入时间去学习。
学习Scala语言,不仅仅意味着熟悉新的API,更重要的是一种思维方式的转变。从原有的面向对象编程(OO)到函数式编程(FP)的思想,这是我认为学习Scala最困难的地方,因为很多程序员还处在面向对象编程的学习阶段。和很多其他编程语言的学习一样,如果一开始有丰富的例子可以参考,可以帮助你解决上手时的问题,不管是对于项目的进度,以及进一步的深入学习,都是大有裨益的。本书就是你学习Scala的绝佳指南,它面向实际的使用场景,提供了大量的实例,同时,也给出底层的原理和相关的参考。对于Scala新手来说这是一本非常不错的入门书,而对于老手来说也是一本夯实基础,检视自己所学知识的好书。
感谢作者Alvin Alexander为我们带来这本实用的Scala作品,感谢我的同事张锦文和任晓军对这次翻译的鼎力相助,我们都是第一次翻译英文技术书籍,而且是如此鸿篇巨著,这对我们来说是莫大的挑战。感谢我的家人和女友对我工作的支持和理解,没有他们我无法完成这个任务。
本书翻译过程中,译者已尽力将原著的意思还原到中文的语境 ,但毕竟能力和经验都尚浅,难免有不足和疏漏的地方。望各位读者批评斧正。






文件名称:《Scala编程实战》epub+mobi+azw3电子书

下载地址:百度网盘

资源来源:网络收集

网盘资源均收集于网络,只作学习和交流使用,版权归原作者所有,请在下载后24小时之内删除!若作商业用途,请到原网站购买,由于未及时购买和付费发生的侵权行为,与本站无关。

点击下载

0
分享到:

评论0

请先

没有账号? 忘记密码?