佚名通过本文主要向大家介绍了lua entry,lua 随机数,lua 取数组成员数,lua生成随机数,lua随机数种子等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:如何获得Lua表中的entry数?
描述:
解决方案1:
描述:
Lua#运算符和table.getn只能在密钥数为整数的情况下,算出entry数:
tbl = {}
tbl["test"] = 47
tbl[1] = 48
print(#tbl, table.getn(tbl)) -- prints "1 1"
count = 0
for _ in pairs(tbl) do count = count + 1 end
print(count) -- prints "2"
我如何能够不用依次查数,就可以得到所有的entry数?
原问题:How to get number of entries in a Lua table?
解决方案1:
通过设置metatable的__len来改变默认的计数方法,代码如下
t = {
[1] = 0,
[2] = 2,
[5] = 999,
xxx = 3,
}
print(#t)
mt = {}
setmetatable(t, mt)
mt.__len = function ( params )
local count = 0
for k,v in pairs(params) do
count = count + 1
end
return count
end
print('+----------------')
print(#t)
输出如下:
2
+----------------
4
[Finished in 0.0s]
参考出处:http://www.codingnow.com/2000/download/lua_manual.html#2.8
答:u0b34a0f6ae
(最佳答案)
你已经找到了问题的解决办法,唯一的方法就是用pairs(..)迭代(iterate)整个表:
function tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
而且,#运算符的定义不够全面,因此,还需要进行如下设定:
t = {1,2,3}
t[5] = 1
t[9] = 1
答:ergosys
你可以建立一个meta-table来统计entry的数目,这种方法比较使用于需要频繁使用这种结果的情况。
答:kikito
我的方法可能有些复杂,就是使用额外的变量来统计数,每添加一个数就增加这个变量:
count = 0
tbl = {}
tbl["test"] = 47
count = count + 1
tbl[1] = 48
count = count + 1
print(count) -- prints "2"