1、有人会直接用表与{}比较
local a = {}
if a == {} then
print("a 是空表")
else
print("a 不是空表")
end
答案可能出乎你的意外,最后打印的是:a不是空表。因为table是引用变量,所以这里比较的是a的地址和匿名table的地址,所以是不相等的。
2、还有人可能用table.maxn()
local a = {key = 1}
if table.maxn(a) == 0 then
print("a 是空表")
else
print("a 不是空表")
end
--[[
a 是空表
]]--
这个时候明明a不是空的但是用table.maxn却返回0,这是因为table.maxn返回的是数组形式的表的长度。
3、其实这里可以用到lua再带的函数next
local a = {}
if next(a) == nil then
print("a 是空表")
else
print("a 不是空表")
end
--[[
a 是空表
]]--