《Lua程序设计》是由电子工业出版社出版的一本关于Lua方面的书籍,作者是罗伯拖?鲁萨利姆斯奇,主要介绍了关于Lua、程序设计方面的知识内容,目前在Lua类书籍综合评分为:8.6分。
书籍介绍
这书由Lua語言创作者亲身编写,对于Lua語言自身 循序渐进地从各个领域开展了详细和细腻的解读。全部与Lua語言相处的平均能从这书获益。这书由 Lua 語言创作者亲身编写,对于 Lua 語言自身 循序渐进地从各个领域开展了详细和细腻的解读。做为第 4 版,这书关键对于的是 Lua 5.3,它是这书编写时 Lua 語言的*版本号。创作者从語言使用人的视角来看,解读了語言基本、程序编写实际操作、高級特点及 C 語言 API 等四个方面的內容,具有 Lua 語言基本数据类型、I/O、控制结构等基本知识,也是对控制模块、闭包、元表、协程、持续、反射面、自然环境、垃圾分类回收、函数式编程、面向对象编程、C 語言 API 等高級特点的系统软件解读,也有对 Lua 5.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 if then 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 部分编程实操 90
- 9 闭包 91
- 9.1 函数是第一类值 92
- 9.2 非全局函数 94
- 9.3 词法定界 96
- 9.4 小试函数式编程 100
- 9.5 练习 103
- 10 模式匹配 105
- 10.1 模式匹配的相关函数 105
- 10.1.1 函数 string.find 105
- 10.1.2 函数 string.match 106
- 10.1.3 函数 string.gsub 107
- 10.1.4 函数 string.gmatch 107
- 10.2 模式 108
- 10.3 捕获 112
- 10.4 替换 114
- 10.4.1 URL 编码 . 116
- 10.4.2 制表符展开 118
- 10.5 诀窍 119
- 10.6 练习 123
- 11 小插曲:出现频率最高的单词 124
- 11.1 练习 126
- 12 日期和时间 128
- 12.1 函数 os.time 129
- 12.2 函数 os.date 130
- 12.3 日期和时间处理 132
- 12.4 练习 134
- 13 位和字节 135
- 13.1 位运算 135
- 13.2 无符号整型数 136
- 13.3 打包和解包二进制数据 139
- 13.4 二进制文件 142
- 13.5 练习 144
- 14 数据结构 145
- 14.1 数组 146
- 14.2 矩阵及多维数组 146
- 14.3 链表 149
- 14.4 队列及双端队列 150
- 14.5 反向表 151
- 14.6 集合与包 152
- 14.7 字符串缓冲区 154
- 14.8 图形 156
- 14.9 练习 158
- 15 数据文件和序列化 159
- 15.1 数据文件 160
- 15.2 序列化 162
- 15.2.1 保存不带循环的表 165
- 15.2.2 保存带有循环的表 167
- 15.3 练习 169
- 16 编译、执行和错误 171
- 16.1 编译 171
- 16.2 预编译的代码 175
- 16.3 错误 177
- 16.4 错误处理和异常 179
- 16.5 错误信息和栈回溯 180
- 16.6 练习 182
- 17 模块和包 184
- 17.1 函数 require 185
- 17.1.1 模块重命名 187
- 17.1.2搜索路径 188
- 17.1.3 搜索器 190
- 17.2 Lua 语言中编写模块的基本方法 190
- 17.3 子模块和包 193
- 17.4 练习 194
- 第 3 部分语言特性 196
- 18 迭代器和泛型 for 197
- 18.1 迭代器和闭包 197
- 18.2 泛型 for 的语法 200
- 18.3 无状态迭代器 201
- 18.4 按顺序遍历表 203
- 18.5 迭代器的真实含义 205
- 18.6 练习 206
- 19 小插曲:马尔可夫链算法 208
- 19.1 练习 211
- 20 元表和元方法 212
- 20.1 算术运算相关的元方法 213
- 20.2 关系运算相关的元方法 216
- 20.3 库定义相关的元方法 217
- 20.4 表相关的元方法 219
- 20.4.1 __index 元方法 219
- 20.4.2 __newindex 元方法 220
- 20.4.3 具有默认值的表 221
- 20.4.4 跟踪对表的访问 . 222
- 20.4.5 只读的表 . 224
- 20.5 练习 225
- 21 面向对象(Object-Oriented)编程 226
- 21.1 类(Class) 228
- 21.2 继承(Inheritance) . 230
- 21.3 多重继承(MultipleInheritance) 232
- 21.4 私有性(Privacy) 235
- 21.5 单方法对象(Single-methodObject) 237
- 21.6 对偶表示(DualRepresentation) 238
- 21.7 练习 240
- 22 环境(Environment) 241
- 22.1 具有动态名称的全局变量 242
- 22.2 全局变量的声明 243
- 22.3 非全局环境 246
- 22.4 使用 _ENV 248
- 22.5 环境和模块 251
- 22.6 _ENV 和 load 252
- 22.7 练习 254
- 23 垃圾收集 255
- 23.1 弱引用表 . 255
- 23.2 记忆函数(MemorizeFunction) 257
- 23.3 对象属性(Object Attribute) 259
- 23.4 回顾具有默认值的表 260
- 23.5 瞬表(Ephemeron Table) 261
- 23.6 析构器(Finalizer) 262
- 23.7 垃圾收集器 266
- 23.8 控制垃圾收集的步长(Pace) 267
- 23.9 练习 268
- 24 协程(Coroutine) 270
- 24.1 协程基础 . 270
- 24.2 哪个协程占据主循环 273
- 24.3 将协程用作迭代器 276
- 24.4 事件驱动式编程 .279
- 24.5 练习 284
- 25 反射(Reflection) 285
- 25.1 自省机制(IntrospectiveFacility) 286
- 25.1.1 访问局部变量 288
- 25.1.2 访问非局部变量 289
- 25.1.3 访问其他协程 291
- 25.2 钩子(Hook) 292
- 25.3 调优(Profile) 293
- 25.4 沙盒(Sandbox) 296
- 25.5 练习 300
- 26 小插曲:使用协程实现多线程 301
- 26.1 练习 306
- 第 4 部分 C 语言 API 307
- 27 C 语言 API 总览 308
- 27.1 第一个示例 309
- 27.2 栈 312
- 27.2.1 压入元素 313
- 27.2.2 查询元素 314
- 27.2.3 其他栈操作 317
- 27.3 使用 C API 进行错误处理 320
- 27.3.1处理应用代码中的错误 320
- 27.3.2 处理库代码中的错误 321
- 27.4 内存分配 322
- 27.5 练习 324
- 28 扩展应用 325
- 28.1 基础知识 325
- 28.2 操作表 327
- 28.2.1 一些简便方法 331
- 28.3 调用 Lua 函数 333
- 28.4 一个通用的调用函数 334
- 28.5 练习 338
- 29 在 Lua 中调用 C 语言 339
- 29.1 C 函数 339
- 29.2 延续(Continuation) 342
- 29.3 C 模块 345
- 29.4 练习 347
- 30 编写 C 函数的技巧 349
- 30.1 数组操作 349
- 30.2 字符串操作 351
- 30.3 在 C 函数中保存状态 355
- 30.3.1 注册表 355
- 30.3.2 上值 358
- 30.3.3 共享的上值(Shared upvalue) 361
- 30.4 练习 362
- 31 C语言中的用户自定义类型 363
- 31.1 用户数据(Userdata) 364
- 31.2 元表(Metatable) 367
- 31.3 面向对象访问 370
- 31.4 数组访问 372
- 31.5 轻量级用户数据 373
- 31.6 练习 375
- 32 管理资源 376
- 32.1 目录迭代器 376
- 32.2 XML 解析器 380
- 32.3 练习 390
- 33 线程和状态 392
- 33.1 多线程 392
- 33.2 Lua 状态 397
- 33.3 练习 406