是否可以拦截全局函数调用,并在调用全局函数时运行另一个函数。
local test = global()
function test()
print("Hello World")
end
我试过这个,但似乎没有用。
修改
我原来的问题措辞很差,我最终想出了这个解决方案。我正在尝试更改的函数位于表的内部,因此我只是复制表,覆盖函数,然后将备份表复制到原始表上以恢复该函数。
copy = {}
i,v = next(globaltable, nil)
while i do
copy[i] = v
i,v = next(globaltable,i)
end
function globaltable:function()
do some stuff
globaltable = copy
end
答案 0 :(得分:3)
如果您想在致电test
时实际致电global()
,请将test
分配给global
:
local old_global = global
global = test
这使global
引用test
的函数对象。