lua一直是游戏领域广泛使用的脚步语言,但从整个IT行业来说确实特别小众,所以和python比起来网络上使用lua的“奇技淫巧”特别少,本文简单介绍一些对debug的一些奇妙用法。
本文对debug的一些用法大部分是从mobdebug(https://github.com/pkulchenko/MobDebug)总结来,推荐大家看看mobdebug的实现源码,里面把coroutine用的特别奇妙,简化了很多实现思路。(里面用源代码方式内嵌了serpent,用来序列化以及反序列化lua数据,作者能写一行就绝对不写两行,特别难看懂)
- get/setfenv实现
过了lua5.2之后就没有这两个函数了,替代方式是_ENV,下面给出实现方式
(实在不愿意用csdn的代码片功能了)
if not setfenv then
local function findenv(f)
local index = 1
repeat
local name, value = debug.getupvalue(f, index)
if name == "_ENV" then
return index, value
end
index = index + 1
until name == nil
return nil
end
getfenv = function (f) return (selec