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 是空表
]]--