2011-10-28 23 views
7

Chỉ cần chọn khi Lua và cố gắng tìm ra cách để xây dựng bảng. Tôi đã thực hiện một tìm kiếm và tìm thấy thông tin trên table.insert nhưng tất cả các ví dụ tôi đã tìm thấy dường như giả sử tôi chỉ muốn các chỉ số trong khi những gì tôi muốn làm là thêm các cặp khóa.Chèn các cặp chìa khóa vào bảng Lua

Vì vậy, tôi tự hỏi liệu điều này có hợp lệ không?

my_table = {} 
    my_table.insert(key = "Table Key", val = "Table Value") 

Điều này sẽ được thực hiện trong một vòng lặp và tôi cần để có thể truy cập vào các nội dung sau:

for k, v in pairs(my_table) do 
     ... 
    end 

Cảm ơn

Trả lời

19

Về cơ bản có hai cách để tạo bảng và điền chúng với dữ liệu.

Đầu tiên là tạo và điền vào bảng cùng một lúc bằng cách sử dụng table constructor. Này được thực hiện như sau:

tab = { 
    keyone = "first value",  -- this will be available as tab.keyone or tab["keyone"] 
    ["keytwo"] = "second value", -- this uses the full syntax 
} 

Khi bạn không biết những gì giá trị mà bạn muốn có trước, trước tiên bạn có thể tạo bảng bằng cách sử dụng {} và sau đó điền vào nó bằng cách sử dụng [] điều hành:

tab = {} 
tab["somekey"] = "some value" -- these two lines ... 
tab.somekey = "some value" -- ... are equivalent 

Note rằng bạn có thể sử dụng đường cú pháp thứ hai (dấu chấm) chỉ khi khóa là một chuỗi tôn trọng quy tắc "số nhận dạng" - tức là bắt đầu bằng một chữ cái hoặc dấu gạch dưới và chỉ chứa chữ cái, số và dấu gạch dưới.

P.S.: Tất nhiên bạn có thể kết hợp hai cách: tạo một bảng với các nhà xây dựng bảng và sau đó điền vào phần còn lại sử dụng [] điều hành:

tab = { type = 'list' } 
tab.key1 = 'value one' 
tab['key2'] = 'value two' 
+0

Cảm ơn lời giải thích – Dayo

1

Xuất hiện điều này nên được câu trả lời:

my_table = {} 
Key = "Table Key" 
-- my_table.Key = "Table Value" 
my_table[Key] = "Table Value" 

Đã làm công việc cho tôi.

+0

có, nhưng bạn không cần'Key = Dòng "Bảng khóa". – kikito

+2

-1: Ví dụ này không thực sự hoạt động. 'my_table.Key' không giống với' my_table [Key] '. –

+1

Rất tốt đẹp của bất cứ ai đã bỏ phiếu cho tôi xuống như tôi đã cố gắng để hiểu một ngôn ngữ mới. Đó là một bước gần hơn và sau đó tôi đã tìm ra rằng "my_table [Key]" hoạt động. – Dayo

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