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

在命令

table.insert(table, data)

中,如何使用字符串键进行插入?

伪代码

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'
等等.....

编辑

我觉得我的示例可能会让人们感到困惑... 我想知道如何使用"insert.table",但要使用字符串键进行插入...

table.insert(table,data,stringkey)

类似这样的东西?

点赞
用户7556173
用户7556173

注释是正确的。你不需要也不能使用 table.insert。你可以查看文档 table.insert。它仅支持数字。它用于表的数组部分。但你正在使用表的哈希部分。

代码:

tableOfStuff = {"cat", "pig", "hat", "lemon"}
t = {}
for i=1, #tableOfStuff do
    local szKey = tableOfStuff[i];
    t[szKey] = tableOfStuff[i]; -- 值可以为其他值。
end
2017-11-13 00:37:12
用户8938083
用户8938083

创建一个表格

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

选项1:

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

--或者像这样:

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

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

t = {}

t.key1 = "value1"

--或者像这样

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

--测试
print table2["cat"]

这是关于 Lua 表格的一个好教程:Lua Tables Tutorial

2017-11-14 14:40:26