首页 > 其他 > 详细

Lua 获取table的长度

时间:2020-05-28 09:31:16      阅读:37      评论:0      收藏:0      [点我收藏+]
#!/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
]]

 

Lua 获取table的长度

原文:https://www.cnblogs.com/zhanggaofeng/p/12978131.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!