2011-10-28 41 views
7

只是选择了Lua并试图弄清楚如何构建表格。 我已经做了一个搜索,并在table.insert上找到了信息,但我发现的所有例子似乎都假设我只想要数字索引,而我想要做的是添加密钥对。在Lua表格中插入钥匙对

所以,我想知道这是否有效?

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

这将在一个循环中完成,我需要以后能够访问内容:

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

感谢

回答

19

基本上有两种方法来创建表格并用数据填充它们。

首先是使用table constructor一次创建并填充表格。这样做是像如下:

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

当你不知道你想要有事先什么值,你可以先使用{}创建表,然后使用[]操作填充:

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

注只有当键是一个符合“标识符”规则的字符串时,才可以使用第二个(点)语法糖 - 即以字母或下划线开始,并且只包含字母,数字和下划线。

P.S.:当然,你可以结合两种方式:创建一个表,表的构造,然后用[]运营商填补其余:

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

感谢您的解释 – Dayo

1

出现,这应该是答案:

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

为我做了这份工作。

+0

是的,但你不需要'Key = “表键”行。 – kikito

+2

-1:这个例子实际上不起作用。 'my_table.Key'与'my_table [Key]'不同。 –

+1

非常好的谁投票给我,因为我试图理解一种新的语言。这是更接近一步,我后来发现“my_table [Key]”有效。 – Dayo