《Lua程序设计 第4版》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(巴西)Roberto Ierusalimschy(罗伯拖·鲁萨利姆斯奇)
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:9787121338045
  • 页数:408 页
图书介绍:Lua语言是开源嵌入式脚本语言领域中独树一帜的一门语言,在包括游戏、嵌入式等领域具有不可替代的重要地位和极为广泛的应用,Lua也是学习编译原理、VM虚拟机等的重要参考和现实依据,Lua程序设计(第4版)结合作者多年的教学经验,更新到Lua5.3版本,让读者更好地吸收了该语言的特性。

第1部分 语言基础 1

1 Lua语言入门 2

1.1 程序段 3

1.2 一些词法规范 5

1.3 全局变量 7

1.4 类型和值 7

1.4.1 nil 8

1.4.2 Boolean 8

1.5 独立解释器 10

1.6 练习 12

2 小插曲:八皇后问题 13

2.1 练习 15

3 数值 17

3.1 数值常量 17

3.2 算术运算 19

3.3 关系运算 21

3.4 数学库 21

3.4.1 随机数发生器 22

3.4.2 取整函数 22

3.5 表示范围 24

3.6 惯例 25

3.7 运算符优先级 26

3.8 兼容性 27

3.9 练习 28

4 字符串 30

4.1 字符串常量 31

4.2 长字符串/多行字符串 33

4.3 强制类型转换 34

4.4 字符串标准库 36

4.5 Unicode编码 39

4.6 练习 41

5 表 43

5.1 表索引 44

5.2 表构造器 46

5.3 数组、列表和序列 48

5.4 遍历表 50

5.5 安全访问 52

5.6 表标准库 53

5.7 练习 54

6 函数 56

6.1 多返回值 58

6.2 可变长参数函数 61

6.3 函数table.unpack 64

6.4 正确的尾调用 65

6.5 练习 66

7 输入输出 68

7.1 简单I/O模型 68

7.2 完整I/O模型 72

7.3 其他文件操作 74

7.4 其他系统调用 75

7.4.1 运行系统命令 75

7.5 练习 77

8 补充知识 78

8.1 局部变量和代码块 78

8.2 控制结构 80

8.2.1 ifthen else 81

8.2.2 while 81

8.2.3 repeat 82

8.2.4 数值型for 82

8.2.5 泛型for 83

8.3 break、return和goto 84

8.4 练习 88

第2部分 编程实操 91

9 闭包 92

9.1 函数是第一类值 93

9.2 非全局函数 95

9.3 词法定界 97

9.4 小试函数式编程 101

9.5 练习 104

10 模式匹配 106

10.1 模式匹配的相关函数 106

10.1.1 函数string.find 106

10.1.2 函数string.match 107

10.1.3 函数string.gsub 108

10.1.4 函数string.gmatch 108

10.2 模式 109

10.3 捕获 113

10.4 替换 115

10.4.1 URL编码 117

10.4.2 制表符展开 119

10.5 诀窍 120

10.6 练习 124

11 小插曲:出现频率最高的单词 125

11.1 练习 127

12 日期和时间 129

12.1 函数os.time 130

12.2 函数os.date 131

12.3 日期和时间处理 133

12.4 练习 135

13 位和字节 136

13.1 位运算 136

13.2 无符号整型数 137

13.3 打包和解包二进制数据 140

13.4 二进制文件 143

13.5 练习 145

14 数据结构 146

14.1 数组 147

14.2 矩阵及多维数组 147

14.3 链表 150

14.4 队列及双端队列 151

14.5 反向表 152

14.6 集合与包 153

14.7 字符串缓冲区 155

14.8 图形 157

14.9 练习 159

15 数据文件和序列化 160

15.1 数据文件 161

15.2 序列化 163

15.2.1 保存不带循环的表 166

15.2.2 保存带有循环的表 168

15.3 练习 170

16 编译、执行和错误 172

16.1 编译 172

16.2 预编译的代码 176

16.3 错误 178

16.4 错误处理和异常 180

16.5 错误信息和栈回溯 181

16.6 练习 183

17 模块和包 185

17.1 函数require 186

17.1.1 模块重命名 188

17.1.2 搜索路径 189

17.1.3 搜索器 191

17.2 Lua语言中编写模块的基本方法 191

17.3 子模块和包 194

17.4 练习 195

第3部分 语言特性 197

18 迭代器和泛型for 198

18.1 迭代器和闭包 198

18.2 泛型for的语法 201

18.3 无状态迭代器 202

18.4 按顺序遍历表 204

18.5 迭代器的真实含义 206

18.6 练习 207

19 小插曲:马尔可夫链算法 209

19.1 练习 212

20 元表和元方法 213

20.1 算术运算相关的元方法 214

20.2 关系运算相关的元方法 217

20.3 库定义相关的元方法 218

20.4 表相关的元方法 220

20.4.1 __index元方法 220

20.4.2 __newindex元方法 221

20.4.3 具有默认值的表 222

20.4.4 跟踪对表的访问 223

20.4.5 只读的表 225

20.5 练习 226

21 面向对象(Object-Oriented)编程 227

21.1 类(Class) 229

21.2 继承(Inheritance) 231

21.3 多重继承(MultipleInheritance) 233

21.4 私有性(Privacy) 236

21.5 单方法对象(Single-method Object) 238

21.6 对偶表示(Dual Representation) 239

21.7 练习 241

22 环境(Environment) 242

22.1 具有动态名称的全局变量 243

22.2 全局变量的声明 244

22.3 非全局环境 247

22.4 使用_ENV 249

22.5 环境和模块 252

22.6 _ENV和load 253

22.7 练习 255

23 垃圾收集 256

23.1 弱引用表 256

23.2 记忆函数(Memorize Function) 258

23.3 对象属性(Object Attribute) 260

23.4 回顾具有默认值的表 261

23.5 瞬表(Ephemeron Table) 262

23.6 析构器(Finalizer) 263

23.7 垃圾收集器 267

23.8 控制垃圾收集的步长(Pace) 268

23.9 练习 269

24 协程(Coroutine) 271

24.1 协程基础 271

24.2 哪个协程占据主循环 274

24.3 将协程用作迭代器 277

24.4 事件驱动式编程 280

24.5 练习 285

25 反射(Reflection) 286

25.1 自省机制(Introspective Facility) 287

25.1.1 访问局部变量 289

25.1.2 访问非局部变量 290

25.1.3 访问其他协程 292

25.2 钩子(Hook) 293

25.3 调优(Profile) 294

25.4 沙盒(Sandbox) 297

25.5 练习 301

26 小插曲:使用协程实现多线程 302

26.1 练习 307

第4部分 C语言API 309

27 C语言API总览 310

27.1 第一个示例 311

27.2 栈 314

27.2.1 压入元素 315

27.2.2 查询元素 316

27.2.3 其他栈操作 319

27.3 使用C API进行错误处理 322

27.3.1 处理应用代码中的错误 322

27.3.2 处理库代码中的错误 323

27.4 内存分配 324

27.5 练习 326

28 扩展应用 327

28.1 基础知识 327

28.2 操作表 329

28.2.1 一些简便方法 333

28.3 调用Lua函数 335

28.4 一个通用的调用函数 336

28.5 练习 340

29 在Lua中调用C语言 341

29.1 C函数 341

29.2 延续(Continuation) 344

29.3 C模块 347

29.4 练习 349

30 编写C函数的技巧 351

30.1 数组操作 351

30.2 字符串操作 353

30.3 在C函数中保存状态 357

30.3.1 注册表 357

30.3.2 上值 360

30.3.3 共享的上值(Shared upvalue) 363

30.4 练习 364

31 C语言中的用户自定义类型 365

31.1 用户数据(Userdata) 366

31.2 元表(Metatable) 369

31.3 面向对象访问 372

31.4 数组访问 374

31.5 轻量级用户数据 376

31.6 练习 377

32 管理资源 378

32.1 目录迭代器 378

32.2 XML解析器 382

32.3 练习 392

33 线程和状态 394

33.1 多线程 394

33.2 Lua状态 399

33.3 练习 408