ScalaProgramming
《 Scala 程序设计(第 2 版)》学习笔记
版权所有
Programming Scala, Second Edition by Dean Wampler and Alex Payne.
Copyright 2015 Dean Wampler and Alex Payne, 978-1-491-94985-6.
Git </br>
</br>
学习说明
- 基于 Scala 2.11.X 版本。
- 原程序基于 sbt 打包,学习过程中替换为 maven 打包。
程序实现
第 01 章:零到六十: Scala 简介
- 为什么选择 Scala
1.1 富有魅力的 Scala
1.2 关于 Java 8 - 安装 Scala
2.1 使用 SBT
2.2 执行 Scala 命令行工具
2.3 在 IDE 中运行 Scala REPL - 使用 Scala
- 并发
第 02 章:更简洁,更强大
- 分号
- 变量声明
- Range
- 偏函数
- 方法声明
5.1 方法默认值和命名参数列表
5.2 方法具有多个参数列表
5.3 Future 简介
5.4 嵌套方法的定义与递归 - 推断类型信息
- 保留字
- 字面量
8.1 整数字面量
8.2 浮点数字面量
8.3 布尔型字面量
8.4 字符字面量
8.5 字符串字面量
8.6 符号字面量
8.7 函数字面量
8.8 元组字面量 - Option 、 Some 和 None :避免使用 null
- 封闭类的继承
- 用文件和名空间组织代码
- 导入类型及其成员
12.1 导入是相对的
12.2 包对象 - 抽象类型与参数化类型
第 03 章:要点详解
- 操作符重载
- 无参数方法
- 优先级规则
- 领域特定语言
- Scala 中的 if 语句
- Scala 中的 for 推导式
6.1 for 循环
6.2 生成器表达式
6.3 保护式:筛选元素
6.4 Yielding
6.5 扩展作用域与值定义 - 其他循环结构
7.1 Scala 的 while 循环
7.2 Scala 中的 do-while 循环 - 条件操作符
- 使用try、catch和final子句
- 名字调用和值调用
- 惰性赋值
- 枚举
- 可插入字符串
- Trait:Scala语言的接口和“混入”
第 04 章:模式匹配
- 简单匹配
- match 中的值、变量和类型
- 序列的匹配
- 元组的匹配
- case 中的 guard 语句
- case 类的匹配
6.1 unapply 方法
6.2 unapplySeq 方法 - 可变参数列表的匹配
- 正则表达式的匹配
- 再谈 case 语句的变量绑定
- 再谈类型匹配
- 封闭继承层级与全覆盖匹配
- 模式匹配的其他用法
- 总结关于模式匹配的评价
第 05 章:隐式详解
- 隐式参数
- 隐式参数适用的场景
2.1 执行上下文
2.2 功能控制
2.3 限定可用实例
2.4 隐式证据
2.5 绕开类型擦除带来的限制
2.6 改善报错信息
2.7 虚类型
2.8 隐式参数遵循的规则 - 隐式转换
3.1 构建独有的字符串插入器
3.2 表达式问题 - 类型类模式
- 隐式所导致的技术问题
- 隐式解析规则
- Scala 内置的各种隐式
- 合理使用隐式
第 06 章:Scala 函数式编程
- 什么是函数式编程
1.1 数学中的函数
1.2 不可变变量 - Scala 中的函数式编程
2.1 匿名函数、 Lambda 与闭包
2.2 内部与外部的纯粹性 - 递归
- 尾部调用和尾部调用优化
- 偏应用函数与偏函数
- Curry 化与函数的其他转换
- 函数式编程的数据结构
7.1 序列
7.2 映射表
7.3 集合 - 遍历、映射、过滤、折叠与归约
8.1 遍历
8.2 映射
8.3 扁平映射
8.4 过滤
8.5 折叠与归约 - 向左遍历与向右遍历
- 组合器:软件最佳组件抽象
- 关于复制
第 07 章:深入学习 for 推导式
- 内容回顾: for 推导式组成元素
- for 推导式:内部机制
- for 推导式的转化规则
- Option 以及其他的一些容器类型
4.1 Option 容器
4.2 Either : Option 类型的逻辑扩展
4.3 Try 类型
4.4 Scalaz 提供的 Validation 类
第 08 章: Scala 面向对象编程
- 类与对象初步
- 引用与值类型
- 价值类
- 父类
- Scala 的构造器
- 类的字段
6.1 统一访问原则
6.2 一元方法 - 验证输入
- 调用父类构造器(与良好的面向对象设计)
- 嵌套类型