
EPFL 编程方法实验室
Scala 语言规范
版本:2.7
原作:马丁.奥德赛 翻译:高德 赵炜
2010-7-20


目录
1. 词法 ..................................................... 1
1.1. 标识符 ............................................. 1
1.2. 换行字符 ............................................ 2
1.3. 字面值 ............................................. 5
1.3.1. 整型字面值 ................................... 5
1.3.2. 浮点型字面值 .................................. 5
1.3.3. 布尔型字面值 .................................. 6
1.3.4. 字符型字面值 .................................. 6
1.3.5. 字符串字面值 .................................. 6
1.3.6. 转义序列 ..................................... 7
1.3.7. 记号字面值 ................................... 8
1.4. 空白与注释 .......................................... 8
1.5. XML 模式 ........................................... 8
2. 标识符,命名和域........................................... 11
3. 类型 .................................................... 13
3.1. 路径 .............................................. 14
3.2. 值类型 ............................................ 14
3.2.1. 单例类型 .................................... 14
3.2.2. 类型映射 .................................... 14
3.2.3. 类型指示 .................................... 15
3.2.4. 参数化类型 .................................. 15
3.2.5. 元组类型 .................................... 16
3.2.6. 标注类型 .................................... 16
3.2.7. 复合类型 .................................... 16
3.2.8. 中缀类型 .................................... 17
3.2.9. 函数类型 .................................... 18
3.2.10. 既存类型 .................................... 18
3.2.11. Predef 中定义的原始类型 ....................... 20
3.3. 非值类型 ........................................... 20
3.3.1. 方法类型 .................................... 20
3.3.2. 多态方法类型 ................................. 21
3.3.3. 类型构造器 .................................. 21
3.4. 基本类型和成员定义 .................................. 22
3.5. 类型间的关系 ....................................... 23
3.5.1. 类型恒等 .................................... 23
3.5.2. 一致性 ...................................... 23
3.6. 易变类型 ........................................... 25
3.7. 类型擦除 ........................................... 25
4. 基本声明与定义 ............................................ 28
4.1. 值声明与定义 ....................................... 28
4.2. 变量声明与定义 ...................................... 29

4.3. 类型声明与类型别名 .................................. 31
4.4. 类型参数 ........................................... 32
4.5. 差异标注 ........................................... 33
4.6. 函数声明与定义 ...................................... 34
4.6.1. 叫名参数 .................................... 35
4.6.2. 重复参数 .................................... 35
4.6.3. 过程 ....................................... 36
4.6.4. 方法返回类型推断 ............................. 37
4.7. Import 子句 ....................................... 37
5. 类与对象 ................................................. 39
5.1. 模板 .............................................. 39
5.1.1. 构造器调用 .................................. 40
5.1.2. 类的线性化 .................................. 41
5.1.3. 类成员 ...................................... 42
5.1.4. 覆盖 ....................................... 42
5.1.5. 继承闭包 .................................... 43
5.1.6. 前置定义 .................................... 43
5.2. 修饰符 ............................................ 44
5.3. 类定义 ............................................ 46
5.3.1. 构造器定义 .................................. 48
5.3.2. Case 类 ..................................... 49
5.3.3. 特征 ....................................... 50
5.4. 对象定义 ........................................... 51
6. 表达式 ................................................... 53
6.1. 表达式类型化 ....................................... 54
6.2. 字面值 ............................................ 54
6.3. Null 值 ........................................... 54
6.4. 指示器 ............................................ 55
6.5. This 和 Super ...................................... 55
6.6. 函数应用 ........................................... 56
6.7. 方法值 ............................................ 57
6.8. 类型应用 ........................................... 58
6.9. 元组 .............................................. 58
6.10. 实例创建表达式 .................................. 58
6.11. 代码块 ......................................... 59
6.12. 前缀,中缀及后缀运算 ............................. 60
6.12.1. 前缀运算 .................................... 60
6.12.2. 后缀操作 .................................... 60
6.12.3. 中缀操作 .................................... 60
6.12.4. 赋值算符 .................................... 61
6.13. 类型化的表达式 .................................. 61
6.14. 标注表达式 ...................................... 62
6.15. 赋值 ........................................... 62
6.16. 条件表达式 ...................................... 63

6.17. While 循环表达式 ................................ 63
6.18. Do 循环表达式 ................................... 64
6.19. For 语句段...................................... 64
6.20. Return 表达式 ................................... 66
6.21. Throw 表达式 .................................... 66
6.22. Try 表达式...................................... 66
6.23. 匿名函数 ....................................... 67
6.24. 语句 ........................................... 68
6.25. 隐式转换 ....................................... 69
6.25.1. 值转换 ...................................... 69
6.25.2. 方法转换 .................................... 69
6.25.3. 重载解析 .................................... 69
6.25.4. 本地类型推断 ................................. 71
6.25.5. Eta 扩展 .................................... 73
7. 隐含参数和视图 ............................................ 75
7.1. implicit 修饰符 .................................... 75
7.2. 隐含参数 ........................................... 75
7.3. 视图 .............................................. 78
7.4. 视图边界 ........................................... 79
8. 模式匹配 ................................................. 81
8.1. 模式 .............................................. 81
8.1.1. 变量模式 .................................... 82
8.1.2. 类型化模式 .................................. 82
8.1.3. 字面值模式 .................................. 82
8.1.4. 稳定标识符模式 ............................... 82
8.1.5. 构造器模式 .................................. 83
8.1.6. 元组模式 .................................... 83
8.1.7. 提取模式 .................................... 83
8.1.8. 模式序列 .................................... 84
8.1.9. 中缀操作符模式 ............................... 84
8.1.10. 模式选择 .................................... 84
8.1.11. XML 模式 .................................... 84
8.1.12. 正则表达式模式 ............................... 84
8.1.13. 恒等模式 .................................... 85
8.2. 类型模式 ........................................... 85
8.3. 模式中的类型参数推断 ................................. 85
8.4. 模式匹配表达式 ...................................... 87
8.5. 模式匹配匿名函数 .................................... 88
9. 顶级定义 ................................................. 91
9.1. 编译单元 ........................................... 91
9.2. 打包 .............................................. 91
9.3. 包引用 ............................................ 91
9.4. 程序 .............................................. 92
10. XML 表达式与模式 ....................................... 93
评论1