Lua熱更新(hotfix)
(金慶的專欄)
hotfix
Lua 5.2/5.3 hotfix. Hot update functions and keep old data.
https://github.com/jinq0123/hotfix
hotfix 實現了Lua熱更新,僅對函數作替換,保留舊數據。
例如 test.lua:
local M = {}
local a = "old"
function M.get_a() return a end
return M
更新到
local M = {}
local a = "new"
function M.get_a() return a .. "_x" end
return M
運行
local hotfix = require("hotfix")
local test = hotfix.hotfix_module("test")
test.get_a() -- "old_x"
數據 a 作為函數的upvalue得到了保留,但是函數得到了更新。
可查看 test/main.lua 中的測試用例。
運行測試:
E:\Git\Lua\hotfix\test>d:\Tools\lua\lua53.exe
Lua 5.3.2 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> require("main").run()
Test OK!
>
(金慶的專欄)
hotfix
Lua 5.2/5.3 hotfix. Hot update functions and keep old data.
https://github.com/jinq0123/hotfix
hotfix 實現了Lua熱更新,僅對函數作替換,保留舊數據。
例如 test.lua:
local M = {}
local a = "old"
function M.get_a() return a end
return M
更新到
local M = {}
local a = "new"
function M.get_a() return a .. "_x" end
return M
運行
local hotfix = require("hotfix")
local test = hotfix.hotfix_module("test")
test.get_a() -- "old_x"
數據 a 作為函數的upvalue得到了保留,但是函數得到了更新。
可查看 test/main.lua 中的測試用例。
運行測試:
E:\Git\Lua\hotfix\test>d:\Tools\lua\lua53.exe
Lua 5.3.2 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> require("main").run()
Test OK!
>