快学Scala PDF扫描版
快学Scala PDF扫描版
作者:[美] C. S. 霍斯曼
年份:2012
页数:408
大小:33 MB
格式:PDF

快学Scala 内容简介:

Scala是一门以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。你可以使用Scala编写出更加精简的程序,同时充分利用并发的威力。由于Scala运行于JVM之上,因此它可以访问任何Java类库并且与Java框架进行互操作。本书从实用角度出发,给出了一份快速的、基于代码的入门指南。Horstmann以“博客文章大小”的篇幅介绍了Scala的概念,让你可以快速地掌握和应用。实际上手的操作,清晰定义的能力层次,从初级到专家级,全程指导。

《快学Scala》适合有一定的Java编程经验、对Scala感兴趣,并希望尽快掌握Scala核心概念和用法的开发者阅读。 

快学Scala 目录:

译者序 III 
序XV 
前言XVII 
作者简介XIX 
第1章 基础A1 1 
1.1 Scala解释器1 
1.2 声明值和变量 3 
1.3 常用类型 4 
1.4 算术和操作符重载 5 
1.5 调用函数和方法 7 
1.6 apply方法8 
1.7 Scaladoc9 
练习11 
第2章 控制结构和函数A1 13 
2.1  条件表达式14 
2.2 语句终止 16 
2.3 块表达式和赋值 16 
2.4  输入和输出17 
2.5 循环 18 
2.6 高级for循环和for推导式19 
2.7 函数 21 
2.8 默认参数和带名参数 L1 22 
2.9 变长参数 L122 
2.10 过程 23 
2.11 懒值L1 24 
2.12 异常 25 
练习27 
第3章 数组相关操作A1 29 
3.1 定长数组 29 
3.2 变长数组:数组缓冲 30 
3.3 遍历数组和数组缓冲 31 
3.4 数组转换 32 
3.5 常用算法 34 
3.6 解读Scaladoc 35 
3.7 多维数组 37 
3.8 与Java的互操作 37 
练习38 
第4章 映射和元组A1 41 
4.1 构造映射 41 
4.2 获取映射中的值 42 
4.3 更新映射中的值 43 
4.4 迭代映射 44 
4.5 已排序映射 44 
4.6 与Java的互操作 45 
4.7 元组 45 
4.8 拉链操作 46 
练习47 
第5章 类A1 51 
5.1 简单类和无参方法51 
5.2 带getter和setter的属性 52 
5.3 只带getter的属性55 
5.4 对象私有字段 56 
5.5 Bean属性L1 57 
5.6 辅助构造器 59 
5.7 主构造器 60 
5.8 嵌套类L1 63 
练习65 
第6章 对象A1 69 
6.1 单例对象 69 
6.2 伴生对象 70 
6.3 扩展类或特质的对象 71 
6.4 apply方法 72 
6.5 应用程序对象 73 
6.6 枚举 74 
练习75 
第7章 包和引入A1 79 
7.1 包 80 
7.2 作用域规则 81 
7.3 串联式包语句 83 
7.4 文件顶部标记法 83 
7.5 包对象84 
7.6 包可见性 85 
7.7 引入 85 
7.8  任何地方都可以声明引入 86 
7.9 重命名和隐藏方法87 
7.10 隐式引入 87 
练习88 
第8章 继承A1 91 
8.1 扩展类91 
8.2 重写方法 92 
8.3 类型检查和转换 93 
8.4 受保护字段和方法94 
8.5 超类的构造 94 
8.6 重写字段 95 
8.7 匿名子类 96 
8.8 抽象类97 
8.9 抽象字段 97 
8.10 构造顺序和提前定义L398 
8.11 Scala继承层级 100 
8.12 对象相等性L1 101 
练习 102 
第9章 文件和正则表达式A1 105 
9.1 读取行 106 
9.2 读取字符106 
9.3 读取词法单元和数字107 
9.4 从URL或其他源读取108 
9.5 读取二进制文件 108 
9.6 写入文本文件 108 
9.7 访问目录109 
9.8 序列化 110 
9.9 进程控制A2 111 
9.10 正则表达式 113 
9.11 正则表达式组 114 
练习 114 
第10章 特质L1 117 
10.1 为什么没有多重继承 117 
10.2 当做接口使用的特质 119 
10.3 带有具体实现的特质 120 
10.4 带有特质的对象121 
10.5 叠加在一起的特质 122 
10.6 在特质中重写抽象方法124 
10.7 当做富接口使用的特质124 
10.8 特质中的具体字段 125 
10.9 特质中的抽象字段 126 
10.10 特质构造顺序 127 
10.11 初始化特质中的字段 129 
10.12 扩展类的特质 131 
10.13 自身类型L2 132 
10.14 背后发生了什么133 
练习 135 
第11章 操作符L1 139 
11.1 标识符 139 
11.2 中置操作符 140 
11.3 一元操作符 141 
11.4 赋值操作符 142 
11.5 优先级 142 
11.6 结合性 143 
11.7 apply和update方法144 
11.8 提取器L2 145 
11.9 带单个参数或无参数的提取器L2 146 
11.10 unapplySeq方法L2 147 
练习 148 
第12章 高阶函数L1 151 
12.1 作为值的函数 151 
12.2 匿名函数 152 
12.3 带函数参数的函数 153 
12.4 参数(类型)推断 154 
12.5 一些有用的高阶函数 155 
12.6 闭包156 
12.7 SAM转换 157 
12.8 柯里化 158 
12.9 控制抽象 159 
12.10 return表达式161 
练习 162 
第13章 集合A2 165 
13.1 主要的集合特质166 
13.2 可变和不可变集合 167 
13.3 序列168 
13.4 列表169 
13.5 可变列表 170 
13.6 集 171 
13.7 用于添加或去除元素的操作符 173 
13.8 常用方法 175 
13.9 将函数映射到集合 177 
13.10 化简、折叠和扫描A3178 
13.11 拉链操作 181 
13.12 迭代器 183 
13.13 流A3 184 
13.14 懒视图 185 
13.15 与Java集合的互操作 186 
13.16 线程安全的集合188 
13.17 并行集合 188 
练习 190 
第14章 模式匹配和样例类A2 193 
14.1 更好的switch 194 
14.2 守卫195 
14.3 模式中的变量 195 
14.4 类型模式 196 
14.5 匹配数组、列表和元组197 
14.6 提取器 198 
14.7 变量声明中的模式 199 
14.8 for表达式中的模式 199 
14.9 样例类 200 
14.10 copy方法和带名参数 201 
14.11 case语句中的中置表示法 201 
14.12 匹配嵌套结构 202 
14.13 样例类是邪恶的吗 203 
14.14 密封类 204 
14.15 模拟枚举 205 
14.16 Option类型 205 
14.17 偏函数L2 207 
练习 207 
第15章 注解A2 211 
15.1 什么是注解 212 
15.2 什么可以被注解212 
15.3 注解参数 213 
15.4 注解实现 214 
15.5 针对Java特性的注解 216 
15.5.1 Java修饰符 216 
15.5.2 标记接口 216 
15.5.3 受检异常 217 
15.5.4 变长参数 217 
15.5.5 JavaBeans218 
15.6 用于优化的注解219 
15.6.1 尾递归 219 
15.6.2 跳转表生成与内联220 
15.6.3 可省略方法221 
15.6.4 基本类型的特殊化222 
15.7 用于错误和警告的注解223 
练习 224 
第16章 XML处理A2 227 
16.1 XML字面量228 
16.2 XML节点228 
16.3 元素属性 230 
16.4 内嵌表达式 231 
16.5 在属性中使用表达式 232 
16.6 特殊节点类型 233 
16.7 类XPath表达式 234 
16.8 模式匹配 235 
16.9 修改元素和属性236 
16.10 XML变换237 
16.11 加载和保存 238 
16.12 命名空间 241 
练习 242 
第17章 类型参数L2 245 
17.1 泛型类 246 
17.2 泛型函数 246 
17.3 类型变量界定 246 
17.4 视图界定 248 
17.5 上下文界定 249 
17.6 Manifest上下文界定249 
17.7 多重界定 250 
17.8 类型约束L3 250 
17.9 型变252 
17.10 协变和逆变点 253 
17.11 对象不能泛型 255 
17.12 类型通配符 256 
练习 257 
第18章 高级类型L2 259 
18.1 单例类型 259 
18.2 类型投影 261 
18.3 路径262 
18.4 类型别名 263 
18.5 结构类型 264 
18.6 复合类型 265 
18.7 中置类型 266 
18.8 存在类型 267 
18.9 Scala类型系统 268 
18.10 自身类型 269 
18.11 依赖注入 271 
18.12 抽象类型L3 272 
18.13 家族多态 L3274 
18.14 高等类型L3 278 
练习 281 
第19章 解析A3 285 
19.1 文法286 
19.2 组合解析器操作287 
19.3 解析器结果变换289 
19.4 丢弃词法单元 291 
19.5 生成解析树 291 
19.6 避免左递归 292 
19.7 更多的组合子 294 
19.8 避免回溯 296 
19.9 记忆式解析器 297 
19.10 解析器说到底是什么 297 
19.11 正则解析器 299 
19.12 基于词法单元的解析器299 
19.13 错误处理 302 
练习 302 
第20章 Actor A3 305 
20.1 创建和启动Actor 306 
20.2 发送消息 307 
20.3 接收消息 308 
20.4 向其他Actor发送消息309 
20.5 消息通道 310 
20.6 同步消息和Future 311 
20.7 共享线程 313 
20.8 Actor的生命周期 316 
20.9 将多个Actor链接在一起 317 
20.10 Actor的设计318 
练习 320 
第21章 隐式转换和隐式参数L3 323 
21.1 隐式转换 324 
21.2 利用隐式转换丰富现有类库的功能 324 
21.3 引入隐式转换 325 
21.4 隐式转换规则 326 
21.5 隐式参数 328 
21.6 利用隐式参数进行隐式转换 329 
21.7 上下文界定 330 
21.8 类型证明 331 
21.9 @implicitNotFound注解333 
21.10 CanBuildFrom解读 333 
练习 336 
第22章 定界延续L3 339 
22.1 捕获并执行延续340 
22.2 “运算当中挖个洞” 341 
22.3 reset和shift的控制流转 342 
22.4 reset表达式的值 343 
22.5 reset和shift表达式的类型 344 
22.6 CPS注解 345 
22.7 将递归访问转化为迭代347 
22.8 撤销控制反转 349 
22.9 CPS变换 353 
22.10 转换嵌套的控制上下文356 
练习 358 
词汇表 360 
索引 367  内容简介:

Scala是一门以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。你可以使用Scala编写出更加精简的程序,同时充分利用并发的威力。由于Scala运行于JVM之上,因此它可以访问任何Java类库并且与Java框架进行互操作。本书从实用角度出发,给出了一份快速的、基于代码的入门指南。Horstmann以“博客文章大小”的篇幅介绍了Scala的概念,让你可以快速地掌握和应用。实际上手的操作,清晰定义的能力层次,从初级到专家级,全程指导。

《快学Scala》适合有一定的Java编程经验、对Scala感兴趣,并希望尽快掌握Scala核心概念和用法的开发者阅读。 

快学Scala 目录:

译者序 III 
序XV 
前言XVII 
作者简介XIX 
第1章 基础A1 1 
1.1 Scala解释器1 
1.2 声明值和变量 3 
1.3 常用类型 4 
1.4 算术和操作符重载 5 
1.5 调用函数和方法 7 
1.6 apply方法8 
1.7 Scaladoc9 
练习11 
第2章 控制结构和函数A1 13 
2.1  条件表达式14 
2.2 语句终止 16 
2.3 块表达式和赋值 16 
2.4  输入和输出17 
2.5 循环 18 
2.6 高级for循环和for推导式19 
2.7 函数 21 
2.8 默认参数和带名参数 L1 22 
2.9 变长参数 L122 
2.10 过程 23 
2.11 懒值L1 24 
2.12 异常 25 
练习27 
第3章 数组相关操作A1 29 
3.1 定长数组 29 
3.2 变长数组:数组缓冲 30 
3.3 遍历数组和数组缓冲 31 
3.4 数组转换 32 
3.5 常用算法 34 
3.6 解读Scaladoc 35 
3.7 多维数组 37 
3.8 与Java的互操作 37 
练习38 
第4章 映射和元组A1 41 
4.1 构造映射 41 
4.2 获取映射中的值 42 
4.3 更新映射中的值 43 
4.4 迭代映射 44 
4.5 已排序映射 44 
4.6 与Java的互操作 45 
4.7 元组 45 
4.8 拉链操作 46 
练习47 
第5章 类A1 51 
5.1 简单类和无参方法51 
5.2 带getter和setter的属性 52 
5.3 只带getter的属性55 
5.4 对象私有字段 56 
5.5 Bean属性L1 57 
5.6 辅助构造器 59 
5.7 主构造器 60 
5.8 嵌套类L1 63 
练习65 
第6章 对象A1 69 
6.1 单例对象 69 
6.2 伴生对象 70 
6.3 扩展类或特质的对象 71 
6.4 apply方法 72 
6.5 应用程序对象 73 
6.6 枚举 74 
练习75 
第7章 包和引入A1 79 
7.1 包 80 
7.2 作用域规则 81 
7.3 串联式包语句 83 
7.4 文件顶部标记法 83 
7.5 包对象84 
7.6 包可见性 85 
7.7 引入 85 
7.8  任何地方都可以声明引入 86 
7.9 重命名和隐藏方法87 
7.10 隐式引入 87 
练习88 
第8章 继承A1 91 
8.1 扩展类91 
8.2 重写方法 92 
8.3 类型检查和转换 93 
8.4 受保护字段和方法94 
8.5 超类的构造 94 
8.6 重写字段 95 
8.7 匿名子类 96 
8.8 抽象类97 
8.9 抽象字段 97 
8.10 构造顺序和提前定义L398 
8.11 Scala继承层级 100 
8.12 对象相等性L1 101 
练习 102 
第9章 文件和正则表达式A1 105 
9.1 读取行 106 
9.2 读取字符106 
9.3 读取词法单元和数字107 
9.4 从URL或其他源读取108 
9.5 读取二进制文件 108 
9.6 写入文本文件 108 
9.7 访问目录109 
9.8 序列化 110 
9.9 进程控制A2 111 
9.10 正则表达式 113 
9.11 正则表达式组 114 
练习 114 
第10章 特质L1 117 
10.1 为什么没有多重继承 117 
10.2 当做接口使用的特质 119 
10.3 带有具体实现的特质 120 
10.4 带有特质的对象121 
10.5 叠加在一起的特质 122 
10.6 在特质中重写抽象方法124 
10.7 当做富接口使用的特质124 
10.8 特质中的具体字段 125 
10.9 特质中的抽象字段 126 
10.10 特质构造顺序 127 
10.11 初始化特质中的字段 129 
10.12 扩展类的特质 131 
10.13 自身类型L2 132 
10.14 背后发生了什么133 
练习 135 
第11章 操作符L1 139 
11.1 标识符 139 
11.2 中置操作符 140 
11.3 一元操作符 141 
11.4 赋值操作符 142 
11.5 优先级 142 
11.6 结合性 143 
11.7 apply和update方法144 
11.8 提取器L2 145 
11.9 带单个参数或无参数的提取器L2 146 
11.10 unapplySeq方法L2 147 
练习 148 
第12章 高阶函数L1 151 
12.1 作为值的函数 151 
12.2 匿名函数 152 
12.3 带函数参数的函数 153 
12.4 参数(类型)推断 154 
12.5 一些有用的高阶函数 155 
12.6 闭包156 
12.7 SAM转换 157 
12.8 柯里化 158 
12.9 控制抽象 159 
12.10 return表达式161 
练习 162 
第13章 集合A2 165 
13.1 主要的集合特质166 
13.2 可变和不可变集合 167 
13.3 序列168 
13.4 列表169 
13.5 可变列表 170 
13.6 集 171 
13.7 用于添加或去除元素的操作符 173 
13.8 常用方法 175 
13.9 将函数映射到集合 177 
13.10 化简、折叠和扫描A3178 
13.11 拉链操作 181 
13.12 迭代器 183 
13.13 流A3 184 
13.14 懒视图 185 
13.15 与Java集合的互操作 186 
13.16 线程安全的集合188 
13.17 并行集合 188 
练习 190 
第14章 模式匹配和样例类A2 193 
14.1 更好的switch 194 
14.2 守卫195 
14.3 模式中的变量 195 
14.4 类型模式 196 
14.5 匹配数组、列表和元组197 
14.6 提取器 198 
14.7 变量声明中的模式 199 
14.8 for表达式中的模式 199 
14.9 样例类 200 
14.10 copy方法和带名参数 201 
14.11 case语句中的中置表示法 201 
14.12 匹配嵌套结构 202 
14.13 样例类是邪恶的吗 203 
14.14 密封类 204 
14.15 模拟枚举 205 
14.16 Option类型 205 
14.17 偏函数L2 207 
练习 207 
第15章 注解A2 211 
15.1 什么是注解 212 
15.2 什么可以被注解212 
15.3 注解参数 213 
15.4 注解实现 214 
15.5 针对Java特性的注解 216 
15.5.1 Java修饰符 216 
15.5.2 标记接口 216 
15.5.3 受检异常 217 
15.5.4 变长参数 217 
15.5.5 JavaBeans218 
15.6 用于优化的注解219 
15.6.1 尾递归 219 
15.6.2 跳转表生成与内联220 
15.6.3 可省略方法221 
15.6.4 基本类型的特殊化222 
15.7 用于错误和警告的注解223 
练习 224 
第16章 XML处理A2 227 
16.1 XML字面量228 
16.2 XML节点228 
16.3 元素属性 230 
16.4 内嵌表达式 231 
16.5 在属性中使用表达式 232 
16.6 特殊节点类型 233 
16.7 类XPath表达式 234 
16.8 模式匹配 235 
16.9 修改元素和属性236 
16.10 XML变换237 
16.11 加载和保存 238 
16.12 命名空间 241 
练习 242 
第17章 类型参数L2 245 
17.1 泛型类 246 
17.2 泛型函数 246 
17.3 类型变量界定 246 
17.4 视图界定 248 
17.5 上下文界定 249 
17.6 Manifest上下文界定249 
17.7 多重界定 250 
17.8 类型约束L3 250 
17.9 型变252 
17.10 协变和逆变点 253 
17.11 对象不能泛型 255 
17.12 类型通配符 256 
练习 257 
第18章 高级类型L2 259 
18.1 单例类型 259 
18.2 类型投影 261 
18.3 路径262 
18.4 类型别名 263 
18.5 结构类型 264 
18.6 复合类型 265 
18.7 中置类型 266 
18.8 存在类型 267 
18.9 Scala类型系统 268 
18.10 自身类型 269 
18.11 依赖注入 271 
18.12 抽象类型L3 272 
18.13 家族多态 L3274 
18.14 高等类型L3 278 
练习 281 
第19章 解析A3 285 
19.1 文法286 
19.2 组合解析器操作287 
19.3 解析器结果变换289 
19.4 丢弃词法单元 291 
19.5 生成解析树 291 
19.6 避免左递归 292 
19.7 更多的组合子 294 
19.8 避免回溯 296 
19.9 记忆式解析器 297 
19.10 解析器说到底是什么 297 
19.11 正则解析器 299 
19.12 基于词法单元的解析器299 
19.13 错误处理 302 
练习 302 
第20章 Actor A3 305 
20.1 创建和启动Actor 306 
20.2 发送消息 307 
20.3 接收消息 308 
20.4 向其他Actor发送消息309 
20.5 消息通道 310 
20.6 同步消息和Future 311 
20.7 共享线程 313 
20.8 Actor的生命周期 316 
20.9 将多个Actor链接在一起 317 
20.10 Actor的设计318 
练习 320 
第21章 隐式转换和隐式参数L3 323 
21.1 隐式转换 324 
21.2 利用隐式转换丰富现有类库的功能 324 
21.3 引入隐式转换 325 
21.4 隐式转换规则 326 
21.5 隐式参数 328 
21.6 利用隐式参数进行隐式转换 329 
21.7 上下文界定 330 
21.8 类型证明 331 
21.9 @implicitNotFound注解333 
21.10 CanBuildFrom解读 333 
练习 336 
第22章 定界延续L3 339 
22.1 捕获并执行延续340 
22.2 “运算当中挖个洞” 341 
22.3 reset和shift的控制流转 342 
22.4 reset表达式的值 343 
22.5 reset和shift表达式的类型 344 
22.6 CPS注解 345 
22.7 将递归访问转化为迭代347 
22.8 撤销控制反转 349 
22.9 CPS变换 353 
22.10 转换嵌套的控制上下文356 
练习 358 
词汇表 360 
索引 367