将包.loaded中的函数替换

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

我尝试迭代相关表格,但表格为空。

local aLibrary = require "aLibrary"

for key,value in ipairs(package.loaded.aLibrary) do
    package.loaded.aLibrary[key] = function() end
end
点赞
用户2546626
用户2546626

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

2015-07-29 09:02:07
用户107090
用户107090

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

local aLibrary = require "aLibrary"

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

请注意,require 不会返回库表的 _副本_,因此上面的代码会影响其 内容 而不是 替换 库表。

换句话说,任何后续对 require "aLibrary" 的调用都会返回带有新功能的表。如果您不希望发生这种情况,则可能需要一个新表而不是更改其内容。

2015-07-29 13:06:03