参考自:https://blog.csdn.net/zxm342698145/article/details/80613429
function reload_module(module_name) local old_module = package.loaded[module_name] or {} package.loaded[module_name] = nil require (module_name)
local new_module = package.loaded[module_name] for k, v in pairs(new_module) do old_module[k] = v end
package.loaded[module_name] = old_module return old_module end
举例:
-- test.lua module(..., package.seeall) function func(a, b) return a * b -- 改为 a + b 再次调用 end -- main.lua require "test" function mainloop() local ret = test.func(10, 10) print (ret) end function reload_module(module_name) local old_module = _G[module_name] package.loaded[module_name] = nil require (module_name) local new_module = _G[module_name] for k, v in pairs(new_module) do old_module[k] = v end package.loaded[module_name] = old_module end function reload() local ms = {"test"} for k, v in pairs(ms) do reload_module(v) end end