我想在運行時重新加載lua腳本。有什麼辦法做到這一點?你是否需要重新初始化lua系統,然後重新讀取所有lua文件?什麼是在運行時重新加載lua腳本的方法?
5
A
回答
13
若(a)的Lua腳本是modules,和(b)模塊不會影響全局或表格模塊的範圍之內,你可以使用package.loaded.????? = nil
造成require
重新加載模塊:
> require "lsqlite3"
> =sqlite3.version
function: 0x10010df50
> sqlite3.version = "33"
> return sqlite3.version
33
> require "lsqlite3"
> return sqlite3.version
33
> package.loaded.lsqlite3 = nil
> return sqlite3.version
33
> require "lsqlite3"
> return sqlite3.version
function: 0x10010c2a0
>
同樣,如果non-module腳本的表現良好,它們(a)只定義單個表,並且(b)不影響全局變量或其他表,然後重新加載腳本也可以。
0
只需使用自己的include(filename)
功能:
function evalfile(filename, env)
local f = assert(loadfile(filename))
return f()
end
function eval(text)
local f = assert(load(text))
return f()
end
function errorhandler(err)
return debug.traceback(err)
end
function include(filename)
local success, result = xpcall(evalfile, errorhandler, filename)
--print(string.format("success=%s filename=%s\n", success, filename))
if not success then
print("[ERROR]\n",result,"[/ERROR]\n")
end
end
function include_noerror(filename)
local success, result = xpcall(evalfile, errorhandler, filename)
--print(string.format("success=%s filename=%s\n", success, filename))
end
相關問題
- 1. 如何在運行時生效/重載腳本時更改Lua腳本?
- 2. 什麼是ROBLOX Lua腳本?
- 3. Greasemonkey腳本僅在頁面重新加載時運行
- 4. 在我的腳本運行時,是否可以加載新的Applescript腳本?
- 5. 並行運行Ruby腳本的正確方法是什麼?
- 6. 在運行時加載腳本並確保加載腳本
- 7. Perl:在perl腳本中運行perl腳本的最快方法是什麼?
- 8. IFrame中的AngularJS run()方法在iframe重新加載時不會重新運行
- 9. 什麼是方法重載?
- 10. 在頁面加載時運行腳本
- 11. 配置運行腳本的最佳方法是什麼?
- 12. 同時使用jquery加載和重新加載腳本的最佳方法
- 13. 在react-redux中執行頁面重新加載的正確方法是什麼?
- 14. 什麼是重新加載UIView的正確方法?
- 15. Grails什麼是重新加載gsp的正確方法
- 16. Lua腳本是在執行前加載到內存中的嗎?
- 17. 在運行時重新加載模塊
- 18. Java Keystore在運行時重新加載
- 19. 爲什麼在redis重新啓動後,我無法在redis中運行lua腳本?
- 20. 在頁面重新加載後運行腳本
- 21. NiFi-1.0.0 - 加載lua腳本
- 22. 在外部腳本加載後運行Vue組件的方法
- 23. 如何運行.lua腳本?
- 24. 如何運行Lua腳本?
- 25. 爲什麼腳本只能在我重新加載頁面?
- 26. atexit()在運行時加載的dll /中的行爲是什麼?
- 27. 什麼時候iOS程序運行`運行腳本'並加載Info.plist
- 28. 爲什麼我的JavaScript腳本在頁面加載時運行,而不是在onclick上運行?所以下面
- 29. 爲什麼我不能運行我的lua腳本?
- 30. 爲什麼我的ajax腳本重新加載我的頁面