lua 热更新
发布时间:2020-12-14 22:05:08 所属栏目:大数据 来源:网络整理
导读:热更新主要用于不停机修复bug等。故其重点是更新逻辑代码。 切记模块设计时,分为数据和逻辑。 1、所有脚本文件,除了入口的文件外,其他都写成module形式; 2、模块中不要有文件内的local变量,目前未知此种变量存到哪里了,local修饰的函数无所谓; 3、所
热更新主要用于不停机修复bug等。故其重点是更新逻辑代码。
a.lua
模块b b.lua local atb = require "a" function funcb() atb.funca() 主程序 main.lua local tbb "b" local atbb local function reloadmodule(modulename) local oldmodule = _G[modulename] for k, v in pairs(oldmodule) do oldmodule[k] nil end _G.loadedrequirelocal newmodule (newmodule= v end oldmodule._M = oldmodule _G= oldmodule = oldmodule oldmodule nil newmodule nil end collectgarbage"collect"(collectgarbage"count") * 1024) tbb.funcb"a tb: " atbb) os.execute"pause") reloadmodule"a") tbb) collectgarbage) |