從dofile處理調用回主文件說我有兩個文件:在Lua
一個叫mainFile.lua:
function altDoFile(name)
dofile(debug.getinfo(1).source:sub(debug.getinfo(1).source:find(".*\\")):sub(2)..name)
end
altDoFile("libs/caller.lua")
function callBack()
print "called back"
end
doCallback()
另一種叫caller.lua,位於libs文件夾:
function doCallback()
print "performing call back"
_G["callBack"]()
end
運行的第一個文件的輸出則是:
"performing call back"
然後沒事了,我錯過了一條線!
爲什麼callBack永遠不會執行?是這個預期的行爲,我如何解決它?
函數被字符串調用的事實很重要,所以不能改變。
更新: 我已經進一步測試它,並且_G [「回調」]沒有解決的功能(類型()),但它仍然不會被調用
確定的路徑分隔符是\,而不是'/'? – lhf
好,不,altDoFile功能是什麼我從別人那裏得到了。但該文件確實加載,所以這不是問題 –
@Delusional Logic:「該文件確實加載,所以這不是問題」然後你應該刪除它並重新發布,如果事實證明它*是問題,那麼你已經發現了一個有價值的線索,如果它不是*問題,你已經從你的帖子中刪除了一個複雜的分散注意力。無論哪種方式,將你的代碼減少到再現問題的最小的事情是雙贏的。 – Mud