Заменить функции в 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"
вернет таблицу с новыми функциями. Если вы не хотите, чтобы это происходило, вам, вероятно, понадобится новая таблица вместо изменения ее содержимого.
Как насчет использования пар для прохождения ключей вместо только индексов?