Lua 获取table的长度
#!/usr/bin/lua -- Lua获取tbale长度算法 --[[ Lua很少使用求长度的算法, 假设table的类型是数组,可以使用tbale.getn(table)或者# 但是也有风险,如果数组中有元素的值是nil,那么计算长度就会出错 假设tbale是键值对,那么tbale.getn(table)或者#都无法使用,只能使用pairs()迭代器的方式 ]] local t1={1,2,3,4,5,6,7,8,9} local t2={a=1,b=2,c=3,d=4,e=5} -- 计算数组的长度 print("t1 length is ",table.getn(t1)) print("t1 length is ",#t1) -- 计算键值对的长度 local l = 0 for _,_ in pairs(t2) do l=l+1 end print("t2 length is ",l) -- 计算table的长度(Metatable) --[[ Lua 5.1版本不支持__len function len_event (op) if type(op) == "string" then return strlen(op) -- 原生的取字符串长度 elseif type(op) == "table" then return #op -- 原生的取 table 长度 else local h = metatable(op).__len if h then -- 调用操作数的处理器 return h(op) else -- 没有处理器:缺省行为 error(···) end end end ]]