拦截全局函数

有没有可能拦截一个全局函数调用,并在调用全局函数时运行另一个函数。

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
点赞
用户1009479
用户1009479

如果想在调用 global() 的时候实际调用 test,需要将 test 赋值给 global

local old_global = global
global = test

这样就可以让 global 指向 test 的函数对象了。

2015-10-18 06:00:10