在Lua中,如何使用字符串键插入表中?

时间:2017-11-11 20:10:18

标签: lua lua-table

在命令

table.insert(table, data)

你如何使用它,但是对于插入有字符串键?

PSEUDO CODE

tableOfStuff = {cat, pig, hat, lemon}
t = {}
for i=1, #tableOfStuff do
    table.insert(t, key=tableOfStuff[i], data=tableOfStuff[i])
end

所以我最终得到一张桌子......

t['cat'] == 'cat'
t['dog'] == 'dog' 
etc.....

修改

我认为我的例子让人感到困惑......我问的是如何使用“insert.table”但是用字符串键插入tings ...

table.insert(table,data,stringkey)

这样的事情?

2 个答案:

答案 0 :(得分:1)

创建一个表

如果您只想创建一个以字符串作为键的表,那么请查看Table Constructors,您有几个选项。

选项1:

t = { key1 = "value1", key2 = "value2" }

--or like this:

t = { ["key1"] = "value1", ["key2"] = "value2" }

选项2 :(先创建一个空表)

t = {}

t.key1 = "value1"    

--or like this

t["key2"] = "value2"

看起来你希望键和值是相同的字符串,这是可能的。只需为key1和value1写相同的东西。所以t["cat"] = "cat"

使用两个表

根据您的示例代码,您看起来想要获取现有的字符串表并从中创建一个新表,其中包含字符串作为键和值。要做到这一点:

table1 = { "cat", "pig", "hat", "lemon" }
table2 = {}
for i=1, #table1 do
    table2[ table1[i] ] = table1[i]
end

--test
print table2["cat"]

这是关于Lua中表格的一个很好的教训:Lua Tables Tutorial

答案 1 :(得分:0)

评论是对的。您不需要,而且您无法使用table.insert。您可以看到文档table.insert。它只支持该号码。它是&#39 ;用于表的数组部分。但是你正在使用表的哈希部分。

代码:

tableOfStuff = {"cat", "pig", "hat", "lemon"}
t = {}
for i=1, #tableOfStuff do
    local szKey = tableOfStuff[i];
    t[szKey] = tableOfStuff[i]; -- the value can be the others.
end