2013-02-19 49 views
5

下面是一個代碼:如何獲取LUA中數組的大小?

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

爲什麼table.getn(用戶)總是返回0?順便說一句,#users也會返回0。所以,我做錯了什麼,還有另一種方法來獲取數組中的元素數量?

+0

不,不管我寫什麼,它總是返回0。它看起來像這些方法不適用於散列/字符串鍵索引類型的數組... – Tutankhamen 2013-02-19 23:59:13

+0

沒錯。這就是頁面上的答案告訴你的。這是你確切的問題:一個不是空的表,但沒有數組元素。 – 2013-02-20 00:16:05

回答

12

table.maxn和#查找數字索引;他們不會看到你的字符串索引。

如您向任意索引數組中元素的個數,我可能會走的陣列使用類似:

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

,但我是個白癡。

+0

謝謝,我知道,但我需要O(1),而不是O(n)方法。我認爲應該有這樣的事情。我錯了嗎? – Tutankhamen 2013-02-19 23:57:09

+1

@Tutankhamen:認爲這樣的事情存在並不會如此。此外,它爲什麼重要?你不能通過數字索引訪問這些字段,那麼爲什麼你需要知道有多少? – 2013-02-20 00:17:01

+0

例如 - 我可以有多達30個用戶每個會話,所以,我想知道多少已經存在,等等。 – Tutankhamen 2013-02-20 00:23:27