目录
Lua 速查表(Lua 5.5)
一、基础语法
1. 变量
- 默认全局变量
local定义局部变量- 支持多重赋值
- 赋值本质是值拷贝(table/function 是引用)
易混淆点:
- 未声明直接赋值就是全局变量
nil会删除 table 键- 多重赋值是先整体计算右边,再统一赋值
示例:
|
|
2. 数据类型
nilbooleannumber(整数和浮点统一)stringtablefunctionthreaduserdata
易混淆点:
- Lua 只有一种 number 类型
- 只有
false和nil为假
示例:
|
|
二、运算符
1. 算术
+ - * ///整除%取模^幂运算
易混淆点:
/永远是浮点除//才是整除
|
|
2. 比较
==~=< > <= >=
易混淆点:
- table 比较的是地址
- 字符串可比较大小(字典序)
|
|
3. 逻辑
andornot
特点:返回操作数本身,不是布尔值
易混淆点:
a or b常用于默认值0在 Lua 中为真
|
|
三、控制结构
1. if
- 必须写
then - 以
end结束
易混淆点:
- 不存在
else if,必须elseif
|
|
2. 循环
while
|
|
repeat
- 至少执行一次
|
|
for 数值循环
- 起始,终止,步长
易混淆点:
- 步长默认 1
- 上限包含
|
|
for 泛型循环
- 常用
pairs、ipairs
易混淆点:
ipairs遇到 nil 停止pairs无序
|
|
四、函数
1. 基础定义
函数是一等公民
|
|
2. 局部函数
|
|
3. 可变参数
...select
易混淆点:
# {...}可能受 nil 影响
|
|
4. 多返回值
- 默认只返回第一个
- 放在表达式最后才展开
易混淆点:
- 位置不同结果不同
|
|
五、Table
Lua 核心结构
1. 创建
|
|
2. 数组与字典混合
|
|
易混淆点:
- 数组从 1 开始
- 长度
#不可靠(有洞时)
3. 删除元素
|
|
4. table库
table.inserttable.removetable.sorttable.concat
|
|
六、字符串
不可变
常用函数
string.substring.findstring.matchstring.gsubstring.format
易混淆点:
- Lua 使用模式匹配,不是完整正则
.在模式里代表任意字符
|
|
七、错误处理
error
|
|
pcall
- 捕获错误
|
|
易混淆点:
pcall返回 true/false + 返回值
八、元表
Lua 面向对象和运算符重载核心
常见元方法
__index__newindex__add__tostring__call
__index 示例
|
|
易混淆点:
__index可是 table 或 function- 只在访问不存在键时触发
九、简单面向对象
|
|
易混淆点:
:会自动传 self.不会传 self
十、协程
轻量级线程
常用函数
coroutine.createcoroutine.resumecoroutine.yieldcoroutine.statuscoroutine.wrap
示例:
|
|
易混淆点:
- resume 返回 是否成功 + 返回值
- yield 只能在协程中调用
十一、模块
require
- 自动缓存
- 只加载一次
|
|
易混淆点:
- require 返回模块 return 的值
- 模块本质就是返回 table
十二、重要语义总结
- 变量默认全局
- table 是引用类型
- 函数是值
- 数组从 1 开始
and/or返回操作数- 只有 nil 和 false 为假
#对非连续数组不可靠- 多返回值只有在最后位置展开
:等价于obj.method(obj, ...)