确定表是否为空(即,当前既不包含数组样式值也不包含dict样式值)的最有效方法是什么?
目前,我正在使用next():
if not next(myTable) then
-- Table is empty
end
Run Code Online (Sandbox Code Playgroud)
有更有效的方法吗?
注意:#运算符在这里不够用,因为它只对表中的数组样式值进行操作 - 因此#{test=2}无法区分,#{}因为它们都返回0.还要注意检查表变量是否nil足够,因为我不是在寻找nil值,而是具有0个条目的表(即{}).
Nor*_*sey 140
您的代码有效但错误.(考虑一下{[false]=0}.)正确的代码是
if next(myTable) == nil then
-- myTable is empty
end
Run Code Online (Sandbox Code Playgroud)
为了获得最大效率,您需要绑定next到局部变量,例如,
...
local next = next
...
... if next(...) ...
Run Code Online (Sandbox Code Playgroud)