【问题标题】:How to get the size of an array in LUA? [duplicate]如何在LUA中获取数组的大小? [复制]
【发布时间】:2013-02-20 07:53:41
【问题描述】:

这是一个代码:

users = {}  
users["aaa"] = "bbbb";
users["bbb"] = "bbbb";
users["ccc"] = "bbbb";
print("Users count ", table.getn(users));

为什么 table.getn(users) 总是返回 0?顺便说一句,#users 也返回 0。那么,我是不是做错了什么,还有另一种方法可以获取数组中的元素数量吗?

【问题讨论】:

  • 不,无论我写什么,它总是返回 0。看起来这些方法不适用于数组的哈希/字符串键索引类型...
  • 没错。这就是该页面上的答案告诉您的内容。这是您的确切问题:一个不为空但没有数组元素的表。

标签: lua


【解决方案1】:

table.maxn 和 # 查找数字索引;他们不会看到你的字符串索引。

至于获取具有任意索引的数组中的元素数量,我可能会使用类似的方式遍历数组:

Count = 0
for Index, Value in pairs( Victim ) do
  Count = Count + 1
end

但我是个白痴。

【讨论】:

  • 谢谢,我知道,但我需要 O(1),而不是 O(n) 方法。我认为应该有类似的东西。我错了吗?
  • @Tutankhamen:认为这样的事情会存在,但事实并非如此。此外,它为什么重要?您无法通过数字索引访问这些字段,那么为什么需要知道有多少?
  • 例如 - 我每个会话最多可以有 30 个用户,所以,我想知道已经有多少用户,等等。
  • 顺便说一句,如果没有其他办法,我会接受这个答案......但无论如何我认为数组不提供这样的接口是不正常的。
  • 啊!没有意识到“进入”会发表评论。您可以使用自定义 __index 和 __newindex 函数创建元表,以便在添加或删除条目时对其进行计数,但我没有考虑过。
猜你喜欢
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 2013-10-11
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多