Lua 的值一共 8 种类型:nil、boolean、number、string、table、function、userdata、thread。用 type() 能拿到类型名字符串,判断类型就靠它。
- nil:没赋过值的变量就是 nil;给表字段赋 nil 等于把这个字段删掉。
- boolean:只有
true和false。判断真假时,只有false和nil算假,0和空字符串""都算真。 - number:整数和小数都算 number,直接写就行。
- string:单引号双引号都行,多行用
[[ ]];..拼接,tonumber()转数字,tostring()转字符串。 - table:唯一的结构类型,数组和字典都用它。默认索引从 1 开始,
#t取长度,t.k和t["k"]是一回事。 - function:函数也是值,能存进变量、放进表、当参数传。
- thread:协程对象,
coroutine.create出来的东西。 - userdata:C 那边传进来的数据,脚本里自己造不出来。
-- type() 返回类型名字符串
print(type(nil)) -- nil
print(type(true)) -- boolean
print(type(10)) -- number
print(type("abc")) -- string
print(type({})) -- table
print(type(print)) -- function
local t = {1, 2, 3} -- 数组写法,索引从 1 开始
print(#t) -- 3
t.name = "lua" -- 同时也能当字典用
print(t.name) -- lua
t.name = nil -- 赋 nil 就是删掉这个字段
print(t.name) -- nil
拿到值不确定类型时,先 type(v) == "table" 再往下用,比硬猜稳。