替换 package.loaded 中的函数

Replace functions in package.loaded

如何在 require 调用后替换 package.loaded 中特定库的所有函数?

我尝试遍历相关的 table 但 table 是空的。

local aLibrary = require "aLibrary"

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

如何使用 pairs 遍历键而不是仅索引?

下面更简单的代码应该可以做到(但请注意使用 pairs 而不是 ipairs)。

local aLibrary = require "aLibrary"

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

请注意,require 不会 return 库 table 的 副本 ,因此上面的代码会影响其 contents 没有 replacing library table.

换句话说,以后对 require "aLibrary" 的任何调用都将 return table 与新功能。如果您不希望这种情况发生,那么您可能需要一个新的 table 而不是更改其内容。