拦截全局功能

时间:2015-10-18 02:51:38

标签: lua

是否可以拦截全局函数调用,并在调用全局函数时运行另一个函数。

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

1 个答案:

答案 0 :(得分:3)

如果您想在致电test时实际致电global(),请将test分配给global

local old_global = global
global = test

这使global引用test的函数对象。