我理解的热更新

mac2026-08-29  12

参考自: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
最新回复(0)