Как получить значение из словаря, если ключ является значением в другом словаре в Lua? - PullRequest
0 голосов
/ 24 июня 2018

Я пишу код, в котором у меня есть несколько словарей для моих данных. Причина в том, что у меня есть несколько основных объектов и несколько более мелких активов, и пользователь должен иметь возможность выбрать меньший ресурс и отключить некоторые функции на расстоянии, запустить код с указанием родителя.

Пример одного из словарей: (я работаю в 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 (), чтобы разделить их - это сработает?

Спасибо.

1 Ответ

0 голосов
/ 24 июня 2018

Как я понимаю, ваша проблема такова:

data[items[item[npcName]]]

ищет данные [«Том»] ... но у вас нет такого ключа в таблице данных. У вас есть ключ «name» со значением «Thom». Вы можете изменить имя ключа и значение в таблице данных. «Том» = имя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...