第 1 章 · 认识寄宿者:Lua 的身世与骨架 章节摘要:本章回答四个问题——Lua 从哪里来,为什么天生要嵌入宿主(1.1);如何用解释器跑起第一段脚本并掌握它的语法骨架(1.2);这门语言只有哪八种值、变量与作用域如何伸缩(1.3);运算符、表达式与控制流为什么刻意做得又少又直(1.4)。读完本章,你不仅能写出第一批 Lua 程序,还能对每一个语法点说出它的"寄宿动机"。 学习目标 阅读完本章,你应当能够: 讲清 Lua 的出身背景与"应用程序的月亮"这一定位,理解小体积、快启动、易嵌入三个设计目标如何贯穿语言始终; 独立安装或取得 Lua 解释器,在交互式解释器与脚本文件两种形态下运行代码,并看懂报错信息的基本结构;
章节摘要:本章回答四个问题——Lua 从哪里来,为什么天生要嵌入宿主(1.1);如何用解释器跑起第一段脚本并掌握它的语法骨架(1.2);这门语言只有哪八种值、变量与作用域如何伸缩(1.3);运算符、表达式与控制流为什么刻意做得又少又直(1.4)。读完本章,你不仅能写出第一批 Lua 程序,还能对每一个语法点说出它的"寄宿动机"。
阅读完本章,你应当能够:
月亮不与太阳争辉:Lua 从不试图独立成事,它只负责把宿主的能力变得可配置。
把这张图从寄宿的角度再读一遍:设计目标是根,语言事实是叶。因为要"小",所以只有八种值、只有一个复合结构;因为要"快",值分成定长的轻值与 GC 管的重值、local 进寄存器、全局表只是普通表;因为要"好嵌",语法骨架保持一页文法、运算符能删就删、控制流全部块结构化。本章四节就是沿着这条因果链从根走到叶:1.1 讲根的历史,1.2 到 1.4 依次过叶的形态。以后每当你遇到一个"为什么 Lua 没有 X"的疑问,先回到三个设计目标里找答案,八成能找到。
从巴西石油公司的配置前端讲起,看一门"应急之作"如何在游戏、数据库、网关、路由器四处安家。这一节给全册提供历史坐标:Lua 5.1 为什么至今仍是事实标准、JIT 分支从哪来、为什么手册敢号称薄薄一册。
动手节。装解释器、进交互环境、写第一段脚本,然后一口气过完大小写敏感、分号可选、注释写法、块界定符这些骨架级约定,最后看一段被宿主调用的脚本长什么样——这是全册第一次见到"寄宿现场"。
值是语言的原子。八种类型各自的寄宿理由、动态类型下 type 与判断的写法、全局变量与 _ENV 的关系、local 的作用域规则,以及为什么嵌入风格要求"能 local 就 local"。
算术、关系、逻辑、连接、长度、取模的行为细节,运算符优先级的记忆法,数字型 for 与泛型 for 的分工,while/repeat 的差别,以及不等于写作 ~=、自增运算符缺席这些"反直觉"设计背后的省略艺术。
读完本章,拿这五个问题自测,答不上来的回对应小节:
print 一个 table 会看到什么,想看内容该用什么思路(1.2、1.3);and/or 如何同时充当缺省值与三元替身,后者的坑在哪(1.4)。五个问题都指向同一个母题:Lua 的每一处语法都不是随意选择,而是"在宿主约束下做出的最省方案"。带着这个眼光继续读第 2 章,函数那章会把它推到更深的层次——函数是宿主与脚本互相调用的唯一载体,它的一等公民地位、闭包、尾调用,全都是为"行为也能像数据一样流转"服务的。
一句话论点:本章是"入住登记"——先认清房客的身世(1.1),再学会基本礼节(1.2),然后清点随身行李(1.3 的八种值),最后掌握日常用语(1.4 的表达式与控制流)。
1.1 身世动机 ──为何小而快──┐ ├─→ 1.2 动手跑通 ─→ 1.3 值与变量 ─→ 1.4 表达式与控制流 设计目标贯穿四节 └── 语法骨架 行李清点 日常用语 └────── 表是下一章主角的预告 ──────┘