local a = {}
if a then
print(true)
end
得到的结果
这样的结果就是a == {}永远返回false,是一个逻辑错误。因为这里比较的是table a和一个匿名table的内存地址
if #a>0 then
print(true)
end
但使用# 去遍历元素本身就是带坑的
例如:
local a = {nil,2,3}
print(#a)
if #a>=3 then
print(true)
end
可以清楚的看到# 把nil也算了进去
local a = {nil,2,3}
print(#a)
if next(a)>=3 then
print(true)
end