Dictionary 当键是Lua中另一个字典中的值时,如何从字典中获取值?

Dictionary 当键是Lua中另一个字典中的值时,如何从字典中获取值?,dictionary,lua,Dictionary,Lua,我正在编写一些代码,其中有多个数据字典。原因是,我有多个核心对象和多个较小的资产,用户必须能够选择一个较小的资产,并在一定距离内关闭一些功能运行代码,并注明父对象 其中一个字典的示例:(我正在使用ROBLOX Lua 5.1,但问题的语法应该是相同的) 这是我的职责: local function function1(item) if not items[item] and data[items[item[npcName]]] then return false end end 如您所

我正在编写一些代码,其中有多个数据字典。原因是,我有多个核心对象和多个较小的资产,用户必须能够选择一个较小的资产,并在一定距离内关闭一些功能运行代码,并注明父对象

其中一个字典的示例:(我正在使用ROBLOX Lua 5.1,但问题的语法应该是相同的)

这是我的职责:

local function function1(item)
    if not items[item] and data[items[item[npcName]]] then return false end
end
如您所见,我尝试使用另一个字典中的键对字典进行索引。通常这是没有问题的

local thisIsAVariable = item[item1[npcName]]
但是我上面使用的方法尝试为数据字典中的数据建立索引

如果没有大量的局部变量和混乱,有没有办法做到这一点?我有一个想法,将冲突的字典引用封装在一个tostring()函数中,以将它们分开——这样行吗


谢谢。

在我看来,你的问题是:

data[items[item[npcName]]]

正在查找数据[“TOM”]。。。但是数据表中没有这样的键。您有一个具有“Thom”值的“name”键。您可以在数据表中反转名称键和值。“Thom”=name

首先,您的数据表中没有
items
表。第二,我可能错了,但似乎您需要将表设置为全局,并使用
\G
表来正确访问所有内容。@Josh,您错了
t={a=“Here”,b=“I”,c=“am”}t2={a”,“b”,“c”}打印(t[t2[3]])
将打印单词“am”。始终可以将表值用作另一个表中的键。不需要_G。@布莱恩,我指的是
的函数调用。我知道
print(t[t2[3]])
在您的示例中会起作用,但如果我这样做
local item=“t2”
,那么
print(t[item[3]])
就不起作用了。至少,这是我的经验,事实并非如此。@Brian,Re,“您可以始终使用表值作为键…”我认为最好说没有“表值”这样的东西。只有值。在某个地方可以在一个表中找到某个值,这一事实与在其他地方或如何使用相同的值无关。@jameslarg“表值”有点不准确
t2
是表,
3
是键,
c
是值。现在,该值
c
可以用作表
t
中的键。我确信我们对正在发生的事情达成了一致——我们只是稍微澄清一下语义……这没关系。
data[items[item[npcName]]]