2014-12-11 17 views
9

Tôi đang cố gắng để tìm ra tương đương với:Làm thế nào để thêm vào một bảng trong Lua

foo = [] 
foo << "bar" 
foo << "baz" 

Tôi không muốn phải đưa ra một chỉ số incrementing. Có cách nào làm dễ hơn không?

+6

Toàn bộ tài liệu có sẵn tại http://www.lua.org/manual/5.2/ – rsethc

+1

oh điều đó thực sự hữu ích. google tiếp tục hướng tôi về phía http://www.lua.org/pil/2.5.html mà về cơ bản là vô ích. – drewish

Trả lời

9

Bạn đang tìm kiếm chức năng insert, được tìm thấy trong phần table của thư viện chính.

foo = {} 
table.insert(foo, "bar") 
table.insert(foo, "baz") 
+0

Ah như vậy: foo = {}; table.insert (foo, "bar"); table.insert (foo, "baz") – drewish

+1

Chết tiệt, bạn đã trả lời bằng cách sử dụng hàm 'insert' trong khi tôi đang gõ câu trả lời của mình. *Tư tưởng lớn gặp nhau*. :-) – cybermonkey

+0

Chính xác. Bạn không cần dấu chấm phẩy, nhưng bạn có thể có em nếu bạn muốn. – rsethc

15
foo = {} 
foo[#foo+1]="bar" 
foo[#foo+1]="baz" 

này hoạt động bởi vì các nhà điều hành # tính độ dài của danh sách. Danh sách sản phẩm nào có chiều dài 0, vv

Nếu bạn đang sử dụng Lua 5.3+, sau đó bạn có thể làm gần như chính xác những gì bạn muốn:

foo = {} 
setmetatable(foo, { __shl = function (t,v) t[#t+1]=v end }) 
_= foo << "bar" 
_= foo << "baz" 

Expressions không báo cáo trong Lua và họ cần phải được sử dụng bằng cách nào đó.

+0

Vui lòng mở rộng lý do tại sao phương thức của bạn hoạt động .. – cybermonkey

+0

Tôi không yêu thích giao diện của nó nhưng rất hay để biết nó hoạt động. – drewish

+2

Nó hơi nhanh hơn 'table.insert'. – Tim

1

Cá nhân tôi muốn tận dụng các table.insert chức năng:

table.insert(a,"b") 

này giúp bạn khỏi phải để lặp qua toàn bộ bảng do đó tiết kiệm nguồn tài nguyên có giá trị như bộ nhớ và thời gian.

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