拦截全局函数
问题描述:
是否可以拦截全局函数调用,并在调用全局时运行另一个函数。拦截全局函数
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
答
如果要实际调用test
调用global()
时,分配给test
global
:
local old_global = global
global = test
这使得global
指的test
函数对象。
什么不行?如果你调用'test',你的* new *测试函数将被调用。你期望的结果是什么? –