拦截全局函数

拦截全局函数

问题描述:

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

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

什么不行?如果你调用'test',你的* new *测试函数将被调用。你期望的结果是什么? –

如果要实际调用test调用global()时,分配给testglobal

local old_global = global 
global = test 

这使得global指的test函数对象。