"Привязка" вложенных таблиц обратно в родительскую таблицу в Lua
Я делаю библиотеку для программы с модом ComputerCraft в Minecraft. Библиотека представляет собой архивную библиотеку, которая использует функцию table.serialize в Lua для архивирования файлов. В каждой функции вы можете указать папки (вложенные таблицы) для использования; например add_folder(table, "new_folder", "folder1", "another_folder")
добавляет new_folder
в another_folder
это внутри folder1
, Я сделал рекурсивную функцию для получения таблицы из списка папок:
local function getFolder(table, ...) return getFolder(table[select(1, expand(arg))], expand(table.remove(table, 1))) end
Это хорошо работает, когда я добавляю информацию, но функции возвращают измененную версию этой вложенной таблицы, как показано в add_folder
функция:
function add_folder(table, name, ...)
local folders = getFolder(table["data"], expand(arg))
folders[name] = {}
return folders --Returns incomplete table
end
Я хотел бы "привязать" эту вложенную таблицу обратно к родителю, чтобы вышеуказанная функция вернула всю таблицу. Как я могу вернуть эту таблицу в родительский?
Обратите внимание, что я не могу использовать библиотеки, которые используют модули C, так как реализация Lua ComputerCraft является просто интерпретатором и не предназначена для использования скомпилированных модулей. В противном случае я бы полностью использовал TAR.