家庭宽带做网站服务器/百度博客收录提交入口
问题:
local a = {}
如何判断a是否为空表?
做法一:
如果a是数组,那么#a返回的是数组的长度,直接判断#a == 0就可以了。这个是前提的:a必须是数组才能这样做,或者有数字做key,其从1开始的。
代码举例:
local a = {["2"] = "world",[2] = "Hello",["3"] = "world2",
}local b = {}local c = {["2"] = "world",[1] = "Hello",["3"] = "world2",
}print(#a) --运行结果为0
print(#b) --运行结果为0
print(#c) --运行结果为1
Lua 中所有的值都可以作为条件。在控制结构的条件中除了 false 和 nil 为假,其他值都为真。所以 Lua 认为 0 和 空字符串 都是真。
做法二:(正确做法)
利用next函数
if next(a) ~= nil--不是空表
else--空表
end
说明:以lua5.3为例,官方已经删除了table.maxn (table)函数,以及getn这样求table长度的函数。
错误举例:
local a = {}if a == {} thenprint("a == {}")
elseprint("a ~= {}")
end
运行结果:a ~= {}
参考:
Lua base next()
lua next 用法
lua条件判断时的真假条件
Lua中的#