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数?
答:u0b34a0f6ae
(最佳答案)
你已经找到了问题的解决办法,唯一的方法就是用pairs(..)迭代(iterate)整个表:
而且,#运算符的定义不够全面,因此,还需要进行如下设定:
答:ergosys
你可以建立一个meta-table来统计entry的数目,这种方法比较使用于需要频繁使用这种结果的情况。
答:kikito
我的方法可能有些复杂,就是使用额外的变量来统计数,每添加一个数就增加这个变量: