2015-10-18 166 views
1

是否可以攔截全局函數調用,並在調用全局時運行另一個函數。攔截全局函數

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 *測試函數將被調用。你期望的結果是什麼? –

回答

3

如果要實際調用test調用global()時,分配給testglobal

local old_global = global 
global = test 

這使得global指的test函數對象。