2014-07-07 42 views
2

是否可以從擴展名爲.lua以外的文件加載模塊?從其他文件擴展名加載腳本?

要求(「grid.txt」)結果:

module 'grid.txt' not found: 
no field package.preload['grid.txt'] 
no file './grid/txt.lua' 
no file '/usr/local/share/lua/5.1/grid/txt.lua' 
no file '/usr/local/share/lua/5.1/grid/txt/init.lua' 
no file '/usr/local/lib/lua/5.1/grid/txt.lua' 
no file '/usr/local/lib/lua/5.1/grid/txt/init.lua' 
no file './grid/txt.so' 
no file '/usr/local/lib/lua/5.1/grid/txt.so' 
no file '/usr/local/lib/lua/5.1/loadall.so' 
no file './grid.so' 
no file '/usr/local/lib/lua/5.1/grid.so' 
no file '/usr/local/lib/lua/5.1/loadall.so' 

我懷疑它在調用之前以某種方式將腳本加載到package.preaload [「grid.txt」(無論是)要求?

回答

2

這取決於你的意思是加載

如果要執行當前目錄中名爲grid.txt的文件中的代碼,那麼只需執行dofile"grid.txt"即可。如果grid.txt位於不同的目錄中,請爲其指定一個路徑。

如果你要使用的路徑搜索是require執行,然後在package.path添加模板爲.txt,用正確的路徑,然後做require"grid"。注意缺少後綴:require加載模塊標識名稱,而不是路徑

1

如果你想要require("grid.txt")工作,如果有人嘗試,那麼是的,你需要手動loadfile並運行腳本,並把它返回(或任何要求記錄返回時,模塊不返回任何東西)到package.loaded["grid.txt"]

或者,你可以寫自己的裝載機只是喜歡這個項目,你設置成package.preload["grid.txt"]其中發現並加載/或更一般運行該文件,你可以自己寫一個加載函數,把它插入到package.loaders,然後只要看到「* .txt」模塊出現,就讓它做好工作。

+1

或者只是執行'package.path =「?.txt;」.. package.path' – hjpotter92

+0

@ hjpotter92假設他想要寫'require(「grid」)'然後按照lhf在他的回答中的評論。 –

+0

package.path =「?.txt;」.. package.path wins – laggyluk

相關問題