虽说语言的威力依使用者本身的修为高低而定,但不同语言本身的设计又有不同。
若让用Java 写写操作系统内核、Perl 写写驱动程序、C/C++写写web 应用,都无异于舍近求远,好刀只用上了刀背。
Lua 本身是以简单优雅为本,着眼于处理那些C 不擅长的任务。借助C/C++为其扩展,Lua 可闪现无穷魅力。Lua 本身完全遵循ANSI C 而写成,只要有C 编译器的地方,Lua 便可发挥她的力量。Lua 不需要追求Python 那样的大而全的库,太多的累赘,反而
会破坏她的优美。
语言的优美,来自于使用者自己的感悟。Lua 的优雅,也只有使用后才会明白。
扬起帆,让我们一同踏上Lua 的学习之旅……
目录.............................................................................................................................................. iii
第一篇语言................................................................................................................................. 1
第0 章序言................................................................................................................................. 1
0.1 序言.................................................................................................................................... 1
0.2 Lua的使用者....................................................................................................................... 2
0.3 Lua的相关资源................................................................................................................... 3
0.4 本书的体例........................................................................................................................ 3
0.5 关于本书............................................................................................................................ 3
0.6 感谢.................................................................................................................................... 4
第1 章起点................................................................................................................................. 5
1.1 Chunks................................................................................................................................. 5
1.2 全局变量............................................................................................................................ 7
1.3 词法约定............................................................................................................................ 7
1.4 命令行方式........................................................................................................................ 7
第2 章类型和值......................................................................................................................... 9
2.1 Nil ........................................................................................................................................ 9
2.2 Booleans .............................................................................................................................. 9
2.3 Numbers............................................................................................................................. 10
2.4 Strings ................................................................................................................................ 10
2.5 Functions ........................................................................................................................... 12
2.6 Userdata and Threads ........................................................................................................ 12
第3 章表达式........................................................................................................................... 13
3.1 算术运算符...................................................................................................................... 13
3.2 关系运算符...................................................................................................................... 13
3.3 逻辑运算符...................................................................................................................... 13
3.4 连接运算符...................................................................................................................... 14
3.5 优先级.............................................................................................................................. 15
3.6 表的构造........................................................................................................................... 15
第4 章基本语法....................................................................................................................... 18
4.1 赋值语句.......................................................................................................................... 18
4.2 局部变量与代码块(block )......................................................................................... 19
4.3 控制结构语句.................................................................................................................. 20
4.4 break和return语句............................................................................................................. 23
第5 章 函数............................................................................................................................... 24
5.1 返回多个结果值.............................................................................................................. 25
5.2 可变参数........................................................................................................................... 27
5.3 命名参数.......................................................................................................................... 28
第6 章 再论函数....................................................................................................................... 30
6.1 闭包.................................................................................................................................. 32
6.2 非全局函数...................................................................................................................... 34
6.3 正确的尾调用(Proper Tail Calls )............................................................................... 36
第7 章迭代器与泛型for........................................................................................................... 40
7.1 迭代器与闭包.................................................................................................................. 40
7.2 范性for的语义.................................................................................................................. 42
7.3 无状态的迭代器.............................................................................................................. 43
7.4 多状态的迭代器.............................................................................................................. 44
7.5 真正的迭代器.................................................................................................................. 45
第8 章 编译·运行·调试....................................................................................................... 47
8.1 require函数........................................................................................................................ 49
8.2 C Packages......................................................................................................................... 50
8.3 错误.................................................................................................................................. 51
8.4 异常和错误处理.............................................................................................................. 52
8.5 错误信息和回跟踪(Tracebacks)................................................................................ 53
第9 章协同程序....................................................................................................................... 56
9.1 协同的基础...................................................................................................................... 56
9.2 管道和过滤器.................................................................................................................. 58
9.3 用作迭代器的协同.......................................................................................................... 61
9.4 非抢占式多线程.............................................................................................................. 63
第10 章 完整示例..................................................................................................................... 68
10.1 Lua作为数据描述语言使用........................................................................................... 68
10.2 马尔可夫链算法............................................................................................................ 71
第二篇 tables与objects............................................................................................................... 75
第11 章 数据结构..................................................................................................................... 76
11.1 数组................................................................................................................................ 76
11.2 阵和多维数组................................................................................................................ 77
11.3 链表................................................................................................................................ 78
11.4 队列和双端队列............................................................................................................ 78
11.5 集合和包........................................................................................................................ 80
11.6 字符串缓冲.................................................................................................................... 80
第12 章 数据文件与持久化..................................................................................................... 84
12.1 序列化.......
第13 章 Metatables and Metamethods ...................................................................................... 92
13.1 算术运算的Metamethods............................................................................................... 92
13.2 关系运算的Metamethods............................................................................................... 95
13.3 库定义的Metamethods................................................................................................... 96
13.4 表相关的Metamethods................................................................................................... 97
第14 章环境........................................................................................................................... 103
14.1 使用动态名字访问全局变量...................................................................................... 103
14.2 声明全局变量............................................................................................................... 104
14.3 非全局的环境.............................................................................................................. 106
第15 章 Packages .................................................................................................................... 109
15.1 基本方法...................................................................................................................... 109
15.2 私有成员(Privacy)...................................................................................................111
15.3 包与文件.......................................................................................................................112
15.4 使用全局表...................................................................................................................113
15.5 其他一些技巧(Other Facilities)...............................................................................115
第16 章 面向对象程序设计....................................................................................................118
16.1 类...................................................................................................................................119
16.2 继承.............................................................................................................................. 121
16.3 多重继承...................................................................................................................... 122
16.4 私有性(privacy )...................................................................................................... 125
16.5 Single-Method的对象实现方法................................................................................... 127
第17 章 Weak表...................................................................................................................... 128
17.1 记忆函数...................................................................................................................... 130
17.2 关联对象属性.............................................................................................................. 131
17.3 重述带有默认值的表.................................................................................................. 132
第三篇 标准库......................................................................................................................... 134
第18 章 数学库....................................................................................................................... 135
第19 章 Table库...................................................................................................................... 136
19.1 数组大小....................................................................................................................... 136
19.2 插入/删除..................................................................................................................... 137
19.3 排序.............................................................................................................................. 137
第20 章 String库..................................................................................................................... 140
20.1 模式匹配函数.............................................................................................................. 141
20.2 模式.............................................................................................................................. 143
20.3 捕获(Captures)........................................................................................................ 146
20.4 转换的技巧(Tricks of the Trade)............................................................................ 151
第21 章 IO库........................................................................................................................... 157
21.1 简单I/O模式................................................................................................................. 157
21.2 完全I/O 模式......
第22 章操作系统库............................................................................................................... 165
22.1 Date和Time ................................................................................................................... 165
22.2 其它的系统调用.......................................................................................................... 167
第23 章 Debug库..................................................................................................................... 169
23.1 自省(Introspective)................................................................................................. 169
23.2 Hooks............................................................................................................................. 173
23.3 Profiles........................................................................................................................... 174
第四篇 C API ........................................................................................................................... 177
第24 章 C API纵览................................................................................................................. 178
24.1 第一个示例程序.......................................................................................................... 179
24.2 堆栈.............................................................................................................................. 181
24.3 C API的错误处理......................................................................................................... 186
第25 章扩展你的程序........................................................................................................... 188
25.1 表操作.......................................................................................................................... 189
25.2 调用Lua函数................................................................................................................ 193
25.3 通用的函数调用.......................................................................................................... 195
第26 章 调用C函数................................................................................................................. 198
26.1 C 函数........................................................................................................................... 198
26.2 C 函数库....................................................................................................................... 200
第27 章撰写C函数的技巧..................................................................................................... 203
27.1 数组操作...................................................................................................................... 203
27.2 字符串处理.................................................................................................................. 204
27.3 在C函数中保存状态.................................................................................................... 207
第28 章 User-Defined Types in C ........................................................................................... 212
28.1 Userdata ......................................................................................................................... 212
28.2 Metatables...................................................................................................................... 215
28.3 访问面向对象的数据.................................................................................................. 217
28.4 访问数组...................................................................................................................... 219
28.5 Light Userdata ............................................................................................................... 220
第29 章 资源管理................................................................................................................... 222
29.1 目录迭代器.................................................................................................................. 222
29.2 XML解析...................................................................................................................... 225