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 是空表
]]--
本文探讨了Lua中判断表是否为空的几种常见但错误的方法,包括直接比较、使用table.maxn(),并介绍了一种正确的判断方式——使用next函数。通过实例解释了为何前两种方法不可行,以及next函数为何能准确判断表是否为空。
574

被折叠的 条评论
为什么被折叠?



