"Привязка" вложенных таблиц обратно в родительскую таблицу в 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.

0 ответов

Другие вопросы по тегам