2013-02-19 48 views
5

Đây là một mã số:Làm thế nào để có được kích thước của một mảng trong LUA?

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

Tại sao table.getn (người dùng) luôn trả về 0? BTW, # người dùng trả về 0 quá. Vì vậy, tôi đang làm một cái gì đó sai trái và có một cách khác để có được số lượng các yếu tố trong mảng?

+0

không, nó luôn trả về 0 bất cứ điều gì tôi viết. Có vẻ như các phương thức này không hoạt động với loại chỉ mục khóa băm/chuỗi của mảng ... – Tutankhamen

+0

Chính xác. Đó là những gì các câu trả lời trên trang đó cho bạn biết. Đó là câu hỏi chính xác của bạn: một bảng không trống, nhưng không có phần tử mảng. –

Trả lời

12

table.maxn và # tìm chỉ số; họ sẽ không thấy các chỉ số chuỗi của bạn.

Như để nhận được số phần tử trong một mảng với chỉ số tùy ý, tôi muốn có thể đi bộ mảng bằng cách sử dụng một cái gì đó như:

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

nhưng tôi là một thằng ngốc.

+0

Cảm ơn, tôi biết điều đó, nhưng tôi cần O (1), không phải phương pháp O (n). Tôi nghĩ sẽ có một cái gì đó như thế. Liệu tôi có sai? – Tutankhamen

+1

@Tutankhamen: Suy nghĩ rằng một điều như vậy sẽ tồn tại sẽ không làm cho nó như vậy. Bên cạnh đó, tại sao nó lại quan trọng? Bạn không thể truy cập các trường đó theo chỉ mục số, vậy tại sao bạn cần phải biết có bao nhiêu trường? Ví dụ: –

+0

- tôi có thể có tối đa 30 người dùng mỗi phiên, vì vậy, tôi muốn biết số lượng đã có, v.v. – Tutankhamen

Các vấn đề liên quan