Lua程序设计:第2版

Lua程序设计:第2版
作 者: 莱鲁萨利姆斯奇
出版社: 电子工业出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 网络编程
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  周惟迪,在少年时由于喜好计算机游戏而喜爱上计算机编程,对各类开发技术皆有涉猎。曾从事过2年游戏程序设计专业的教育工作,之后在上海Ubisoff工作,参与Splinter Cell 4(Xbox 360)、Rayman 4(Xbox 360)等项目开发。现就职于Epic GamesChina,从事MMO引擎,以及基于Unreal 3的MMO游戏开发。常在业余时间参与各种软件的开发,同时翻译过《Direct3D游戏编程入门教程》一书。译者简介:周惟迪,在少年时由于喜好计算机游戏而喜爱上计算机编程,对各类开发技术皆有涉猎。曾从事过2年游戏程序设计专业的教育工作,之后在上海Ubisoff工作,参与Splinter Cell 4(Xbox 360)、Rayman 4(Xbox 360)等项目开发。现就职于Epic GamesChina,从事MMO引擎,以及基于Unreal 3的MMO游戏开发。常在业余时间参与各种软件的开发,同时翻译过《Direct3D游戏编程入门教程》一书。

内容简介

本书是《Lua程序设计》(第1版)的更新和扩展,在第1版的基础上进行了较大的改进,并且加入了很多新的知识点。介绍了Lua语言所具有的功能,并使用大量示例来演示如何将它们运用到实际的任务中深入地介绍了Lua中唯一的数据结构——table,还讨论了数据结构、持久化、包和面向对象编程展示了Lua的标准库,对那些想将Lua作为一门独立语言来使用的开发者特别有用,每一章介绍一个库,包括数学库、table库、字符串库、I/O库、操作系统库、调试库介绍Lua与C语言之间的API,这是为那些想用C语言来访问Lua功能的人准备的作者简介:作者感言:最近几年Lua编程语言发展迅速,已从原来的强项——游戏领域,扩展到了其他的应用领域,例如Adobe Photoshop Lightroom,我很高兴本书能对这些发展作出贡献。本书不同语言的翻译版不仅会帮助到中国Lua社区的广大爱好者,更有助于Lua在世界范围内的发展。我很遗憾无法读懂本书的中文版,但对于幸运的中国读者来说,我希望你们能拥有一次美妙的阅读体验。关于译者:周惟迪 (www.zhouweidi.name),在少年时由于喜好计算机游戏而喜爱上计算机编程,对各类开发技术皆有涉猎。曾从事过2年游戏程序设计专业的教育工作,之后在上海Ubisoft工作,参与Splinter Cell 4(Xbox 360)、Rayman 4(Xbox 360)等项目开发。现就职于Epic Games China,从事MMO引擎,以及基于Unreal 3的MMO游戏开发。常在业余时间参与各种软件的开发,同时翻译过《Direct3D游戏编程入门教程》一书。

图书目录

第1部分

第1章 开始 3

1.1 程序块(chunk) 3

1.2 词法规范 5

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

19.1 插入和删除 163

19.2 排序 163

19.3 连接 165

第20章 字符串库 167

20.1 基础字符串函数 167

20.2 模式匹配(pattern-matching)函数 169

20.2.1 string.find函数 169

20.2.2 string.match函数 170

20.2.3 string.gsub函数 170

20.2.4 string.gmatch函数 171

20.3 模式 172

20.4 捕获(capture) 175

20.5 替换 177

20.5.1 URL编码 178

20.5.2 tab扩展 180

20.6 技巧 181

第21章 I/O库 185

21.1 简单I/O模型 185

21.2 完整I/O模型 188

21.2.1 性能小诀窍 189

21.2.2 二进制文件 190

21.2.3 其他文件操作 192

第22章 操作系统库 193

22.1 日期和时间 193

22.2 其他系统调用 195

第23章 调试库 197

23.1 自省机制 197

23.1.1 访问局部变量 199

23.1.2 访问非局部的变量(non-local varible) 200

23.1.3 访问其他协同程序 201

23.2 钩子 202

23.3 性能剖析(profile) 202

第4部分

第24章 C API概述 207

24.1 第一个示例 208

24.2 栈 210

24.2.1 压入元素 211

24.2.2 查询元素 212

24.2.3 其他栈操作 214

24.3 C API中的错误处理 215

24.3.1 应用程序代码中的错误处理 216

24.3.2 库代码中的错误处理 216

第25章 扩展应用程序 219

25.1 基础 219

25.2 table操作 220

25.3 调用Lua函数 224

25.4 一个通用的调用函数 226

第26章 从Lua调用C 229

26.1 C函数 229

26.2 C模块 231

第27章 编写C函数的技术 233

27.1 数组操作 233

27.2 字符串操作 234

27.3 在C函数中保存状态 237

27.3.1 注册表(registry) 237

27.3.2 C函数的环境 239

27.3.3 upvalue 239

第28章 用户自定义类型 243

28.1 userdata 243

28.2 元表 246

28.3 面向对象的访问 248

28.4 数组访问 250

28.5 轻量级userdata(light userdata) 251

第29章 管理资源 253

29.1 目录迭代器 253

29.2 XML分析器 256

第30章 线程和状态 265

30.1 多个线程 265

30.2 Lua状态 269

第31章 内存管理 277

31.1 分配函数 277

31.2 垃圾收集器 279

31.2.1 原子操作 280

31.2.2 垃圾收集器的API 280