Lua: 退出事件
Lua: exit event
我正在编写用于登录 Lua 的库,其中包含一些高级功能,例如日志更新。纯Lua有退出事件吗?我将使用它来避免在进程退出后隐藏光标。
正如 Egor 在评论中所写,您可以使用 __gc
元方法来捕获 Lua 5.2+ 中最终垃圾回收的事件;您需要在 Lua 5.1 中使用未记录的 newproxy
。以下代码应该在 Lua 5.1 和更高版本的解释器中工作:
local m = {onexit = function() print("exiting...") end}
if _VERSION >= "Lua 5.2" then
setmetatable(m, {__gc = m.onexit})
else
m.sentinel = newproxy(true)
getmetatable(m.sentinel).__gc = m.onexit
end
我正在编写用于登录 Lua 的库,其中包含一些高级功能,例如日志更新。纯Lua有退出事件吗?我将使用它来避免在进程退出后隐藏光标。
正如 Egor 在评论中所写,您可以使用 __gc
元方法来捕获 Lua 5.2+ 中最终垃圾回收的事件;您需要在 Lua 5.1 中使用未记录的 newproxy
。以下代码应该在 Lua 5.1 和更高版本的解释器中工作:
local m = {onexit = function() print("exiting...") end}
if _VERSION >= "Lua 5.2" then
setmetatable(m, {__gc = m.onexit})
else
m.sentinel = newproxy(true)
getmetatable(m.sentinel).__gc = m.onexit
end