Итак, я пытаюсь изменить значение во вложенной таблице, используя таблицу ключей
Пример:
local DATA = {
Storage = {
Person_id = {
Money = 0;
Inventory = {
Item1 = 0;
}
}
}
}
local function ChangeData(ID, KeyTable, Value, Operation)
local StorageValue = DATA.Storage[ID].Data;
for _, Key in ipairs(KeyTable) do
StorageValue = StorageValue[Key];
end
if Operation == "+" then
StorageValue = StorageValue + Value;
elseif Operation == "=" then
StorageValue = Value;
end
end
ChangeData("person_id", {"Money"}, 5, "="};
ChangeData("person_id", {"Inventory", "Item1"}, 5, "="};
Это успешно при получении значения из вложенной таблицы ( и изменяя значение переменной), но не изменяя значение во вложенной таблице.
...
Единственный способ исправить это (который ДЕЙСТВИТЕЛЬНО НЕ ДЕЙСТВУЕТ хочу сделать) это жестко закодировать. Пример:
if Operation == "=" then
if #KeyTable == 1 then
DATA.Storage[ID].Data[KeyTable[1]] = Value;
elseif #KeyTable == 2 then
DATA.Storage[ID].Data[KeyTable[1]][KeyTable[2]] = Value;
--... and so on
Итак, что я спрашиваю: Есть ли нехакерский способ изменить значение во вложенной таблице, используя таблицу ключей?