Lua判断空表的正确姿势
作者:ms2008
编辑:糖果
if t == {} then
这样的结果就是 t == {} 永远返回 false,是一个逻辑错误。因为这里比较的是 table t 和一个匿名 table 的内存地址。
if table.maxn(t) == 0 then
这样做也不保险,除非 table 的 key 都是数字,而没有 hash 部分。
if next(t) == nil then
next 其实就是 pairs 遍历 table 时用来取下一个内容的函数。在项目的 module 中最好封装一下,免得 module 本地也有 next 函数。封装后判断的 lua table 是否为空的函数如下:
function table_is_empty(t)
return _G.next(t) == nil
end