Lua 数据类型概览 速查

Lua 共 8 种数据类型:nil、boolean、number、string、table、function、userdata、thread。用 type() 取类型名;只有 false 和 nil 为假;table 同时充当数组和字典,索引从 1 开始,给字段赋 nil 即删除。
Alexer 发布于 

Lua 冒号调用与点调用区别 速查

冒号调用是语法糖,obj:fn(a) 等于 obj.fn(obj, a),自动把对象作为 self 传入;点调用必须手动传。定义时冒号自动带 self 形参,点定义要自己写 self。定义和调用保持同一种写法,混用会导致参数错位。
Alexer 发布于 

Lua 模式匹配基础 速查

Lua 模式匹配不用正则,靠 string.find、match、gmatch、gsub 四个函数。记住 %a %d %s %w 这类字符类,大写取反,魔法字符加 % 转义,量词有 * + - ?, 是字符集,() 做捕获,%1 在 gsub 里引用捕获内容。
Alexer 发布于 

Lua string.gsub 替换 速查

string.gsub 用于全局替换字符串,返回替换后的新字符串和替换次数。模式用 %d、%a、%s 等 Lua 匹配规则,替换内容支持 %0、%1 捕获引用,也可传函数或表,第四个参数可限制替换次数。
Alexer 发布于 

Lua table.insert 用法 速查

table.insert 用于向 Lua 表插入元素:只传值追加到末尾,传位置则插到指定下标并后移后续元素,表长度自动加一。位置范围 1 到 #t+1,只适用于连续下标的数组,循环收集数据时最常用。
Alexer 发布于 

Lua elseif 多分支 速查

Lua 多分支用 if...elseif...then...else...end,条件自上而下判断,命中即止。elseif 是一个词不能空格,每个分支条件后要跟 then,else 可省略,结尾必须 end。条件按从严格到宽松排列,else if 带空格是嵌套写法需多配 end。
Alexer 发布于 

Lua 真假值规则 速查

Lua 只有 false 和 nil 为假,0、空串、空表都算真。and 和 or 返回操作数本身而非布尔值,not 才返回布尔。区分 false 与 nil 必须显式比较,默认值写法会把 false 一起替换。
Alexer 发布于 

Lua self 参数作用 速查

self 是冒号定义函数时 Lua 自动加上的隐藏第一个参数,指向调用该函数的表。obj:hello() 等价于 obj.hello(obj);用点号定义就要自己写 self 并手动传表。定义和调用都用冒号,混用会让 self 变成 nil。
Alexer 发布于 

Lua 字符串写法 速查

Lua 字符串单双引号都能用,转义写特殊字符,双方括号写多行文本,两点拼接、#取长度,配合 format、sub、gsub 等函数处理,字符串不可变,操作都返回新串。
Alexer 发布于 

Lua 注释写法 速查

Lua 注释分单行和多行:单行用 -- 到本行末尾,多行用 --]。注释内容里出现 ]],可改成 --==],等号个数首尾一致即可。
Alexer 发布于