首页 > 解决方案 > 当键是 Lua 中另一个字典中的值时,如何从字典中获取值?

问题描述

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

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

local data = {
    character = workspace.Stores.NPCs.Thom,
    name = "Thom", npcId = 9,
    npcDialog = workspace.Stores.NPCs.Thom.Dialog
}
local items = {
    item1 = {
        model = workspace.Stores.Items.Item1.Main,
        npcName = "Thom",
    }
}

这是我的功能:

local function function1(item)
    if not items[item] and data[items[item[npcName]]] then return false end
end

如您所见,我尝试使用另一个字典中的键来索引字典。通常这没有问题。

local thisIsAVariable = item[item1[npcName]]

但是我上面使用的方法尝试为数据字典中的数据项索引数据字典。

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

谢谢你。

标签: dictionarylua

解决方案


在我看来,您的问题是:

data[items[item[npcName]]]

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


推荐阅读