2013-02-19 14 views
5

Oto kod:Jak uzyskać rozmiar tablicy w LUA?

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

Why table.getn (użytkownicy) zawsze zwraca 0? BTW, #users zwraca także 0. Czy robię coś złego i istnieje inny sposób na uzyskanie ilości elementów w tablicy?

+0

nie, zawsze zwraca 0, co piszę. Wygląda na to, że te metody nie działają z tablicą typu tablicy kluczy kryptograficznych ... – Tutankhamen

+0

Dokładnie. Tak mówią nam odpowiedzi na tej stronie. To jest twoje dokładne pytanie: tabela, która nie jest pusta, ale nie ma elementów tablicy. –

Odpowiedz

12

table.maxn i # wyszukaj indeksy numeryczne; nie będą widzieć twoich wskaźników sznurkowych.

chodzi o uzyskanie liczbę elementów w tablicy z dowolnych indeksów, to bym pewnie chodzić tablicę używając coś takiego:

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

ale jestem idiotą.

+0

Dzięki, wiem o tym, ale potrzebuję metody O (1), a nie O (n). Myślę, że powinno być coś takiego. Czy się mylę? – Tutankhamen

+1

@ Tankankhamen: Myślenie, że coś takiego będzie istniało, nie sprawi, że tak będzie. Poza tym, dlaczego to ma znaczenie? Nie możesz uzyskać dostępu do tych pól przez indeks numeryczny, więc dlaczego musisz wiedzieć, ile ich jest? –

+0

na przykład - mogę mieć do 30 użytkowników na sesję, więc chcę wiedzieć, ile już tam jest itp. – Tutankhamen