Lua程序设计(第4版)
第 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 …
查看完整
查看完整
Roberto Ierusalimschy是Lua语言的首席架构师,从1993年Lua语言诞生起即进行Lua语言的开发工作,目前是巴西PUC-Rio(the Pontifical Catholic University of Rio de Janeiro)大学计算机科学专业的一名助理教授,主要从事编程语言的设计和实现工作。
梅隆魁,2013.4至今就职于中国民生银行总行信息科技部,擅长于Java企业级开发、嵌入式系统/软硬件、安卓逆向等方向,同时,对新技术也一直保有热情。
梅隆魁,2013.4至今就职于中国民生银行总行信息科技部,擅长于Java企业级开发、嵌入式系统/软硬件、安卓逆向等方向,同时,对新技术也一直保有热情。
本书由 Lua 语言作者亲自撰写,针对 Lua 语言本身由浅入深地从各个方面进行了完整和细致的讲解。作为第 4 版,本书主要针对的是 Lua 5.3,这是本书撰写时 Lua 语言的*新版本。作者从语言使用者的角度出发,讲解了语言基础、编程实操、高级特性及 C 语言 API 等四个方面的内容,既有 Lua 语言基本数据类型、输入输出、控制结构等基础知识,也有对模块、闭包、元表、协程、延续、反射、环境、垃圾回收、函数式编程、面向对象编程、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 多重继承(Multiple Inheritance) 232 21.4 私有性(Privacy) 235 21.5 单方法对象(Single-method Object) 237 21.6 对偶表示(Dual Representation) 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 记忆函数(Memorize Function) 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 自省机制(Introspective Facility) 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
^ 收 起
^ 收 起
Roberto Ierusalimschy是Lua语言的首席架构师,从1993年Lua语言诞生起即进行Lua语言的开发工作,目前是巴西PUC-Rio(the Pontifical Catholic University of Rio de Janeiro)大学计算机科学专业的一名助理教授,主要从事编程语言的设计和实现工作。
梅隆魁,2013.4至今就职于中国民生银行总行信息科技部,擅长于Java企业级开发、嵌入式系统/软硬件、安卓逆向等方向,同时,对新技术也一直保有热情。
梅隆魁,2013.4至今就职于中国民生银行总行信息科技部,擅长于Java企业级开发、嵌入式系统/软硬件、安卓逆向等方向,同时,对新技术也一直保有热情。
本书由 Lua 语言作者亲自撰写,针对 Lua 语言本身由浅入深地从各个方面进行了完整和细致的讲解。作为第 4 版,本书主要针对的是 Lua 5.3,这是本书撰写时 Lua 语言的*新版本。作者从语言使用者的角度出发,讲解了语言基础、编程实操、高级特性及 C 语言 API 等四个方面的内容,既有 Lua 语言基本数据类型、输入输出、控制结构等基础知识,也有对模块、闭包、元表、协程、延续、反射、环境、垃圾回收、函数式编程、面向对象编程、C 语言 API 等高级特性的系统讲解,还有对 Lua 5.3 中引入的整型、位运算、瞬表、延续等新功能的细致说明。
比价列表
1人想要2人拥有
公众号、微信群
缺书网
微信公众号
微信公众号
扫码进群
实时获取购书优惠
实时获取购书优惠