Заменить функции в package.loaded

Как вы можете заменить все функции для конкретной библиотеки в package.loaded после require вызов?

Я попытался перебрать соответствующую таблицу, но таблица пуста.

local aLibrary = require "aLibrary"

for key,value in ipairs(package.loaded.aLibrary) do
    package.loaded.aLibrary[key] = function() end
end

2 ответа

Решение

Более простой код ниже должен это сделать (но обратите внимание на использование pairs вместо ipairs).

local aLibrary = require "aLibrary"

for key in pairs(aLibrary) do
    aLibrary[key] = function() end
end

Обратите внимание, что require не возвращает копию таблицы библиотеки, поэтому приведенный выше код влияет на ее содержимое без замены таблицы библиотеки.

Другими словами, любой последующий призыв к require "aLibrary" вернет таблицу с новыми функциями. Если вы не хотите, чтобы это происходило, вам, вероятно, понадобится новая таблица вместо изменения ее содержимого.

Как насчет использования пар для прохождения ключей вместо только индексов?

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