第1部分
第1章 开始 3
1.1 程序块(chunk) 3
1.3 全局变量 6
1.4 解释器程序(the dtand-slone interpreter) 7
第2章 类型与值 9
2.1 nil(空) 10
2.2 boolean(布尔) 10
2.3 number(数字) 10
2.4 string(字符串) 11
2.5 table(表) 14
2.6 function(函数) 17
2.7 userdata(自定义类型)和thread(线程) 18
第3章 表达式 19
3.1 算术操作符 19
3.2 关系操作符 20
3.3 逻辑操作符 20
3.4 字符串连接 22
3.5 优先级 22
3.6 table构造式(table constructor) 23
第4章 语句 27
4.1 赋值 27
4.2 局部变量与块(block) 28
4.3 控制结构 30
4.3.1 if then else 30
4.3.2 while 31
4.3.3 repeat 31
4.3.4 数字型for(numeric for) 31
4.3.5 泛型for(generic for) 32
4.4 break与return 34
第5章 函数 35
5.1 多重返回值(multiple results) 36
5.2 变长参数(variable number of arguments) 39
5.3 具名实参(named arguments) 42
第6章 深入函数 45
6.1 closure(闭合函数) 47
6.2 非全局的函数(non-global function) 50
6.3 正确的尾调用(proper tail call) 52
第7章 迭代器与泛型for 55
7.1 迭代器与closure 55
7.2 泛型for的语义 57
7.3 无状态的迭代器 58
7.4 具有复杂状态的迭代器 60
7.5 真正的迭代器 61
第8章 编译、执行与错误 63
8.1 编译 63
8.2 C代码 66
8.3 错误(error) 67
8.4 错误处理与异常 69
8.5 错误消息与追溯(traceback) 70
第9章 协同程序(coroutine) 73
9.1 协同程序基础 73
9.2 管道(pipe)与过滤器(filter) 76
9.3 以协同程序实现迭代器 78
9.4 非抢先式的(non-preemptive)多线程 81
第10章 完整的示例 87
10.1 数据描述 87
10.2 马尔可夫链(markov chain)算法 90
第2部分
第11章 数据结构 95
11.1 数组 95
11.2 矩阵与多维数组 96
11.3 链表 97
11.4 队列与双向队列 98
11.5 集合与无序组(bag) 99
11.6 字符串缓冲 100
11.7 图 102
第12章 数据文件与持久性 105
12.1 数据文件 105
12.2 串行化(Serialization) 107
12.2.1 保存无环的table 109
12.2.2 保存有环的table 110
第13章 元表(metatable)与元方法(meatmethod) 113
13.1 算术类的元方法 114
13.2 关系类的元方法 116
13.3 库定义的元方法 117
13.4 table访问的元方法 118
13.4.1 _ _index元方法 118
13.4.2 _ _newindex元方法 120
13.4.3 具有默认值的table 120
13.4.4 跟踪table的访问 121
13.4.5 只读的table 123
第14章 环境 125
14.1 具有动态名字的全局变量 125
14.2 全局变量声明 127
14.3 非全局的环境 129
第15章 模块与包 133
15.1 require函数 134
15.2 编写模块的基本方法 136
15.3 使用环境 138
15.4 module函数 140
15.5 子模块与包 141
第16章 面向对象编程 143
16.1 类 144
16.2 继承 146
16.3 多重继承 148
16.4 私密性 150
16.5 单一方法(single-method)做法 152
第17章 弱引用table 153
17.1 备忘录(memoize)函数 154
17.2 对象属性 156
17.3 回顾table的默认值 157
第3部分
第18章 数学库 161
第19章 table库 163
第20章 字符串库 167
第21章 I/O库 185
第22章 操作系统库 193
第23章 调试库 197
第4部分
……