从其他文件扩展名加载脚本?

时间:2014-07-07 20:52:42

标签: module lua require file-extension

是否可以从扩展名不是.lua的文件加载模块?

require(" 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'

我怀疑在调用require之前,以某种方式可以将脚本加载到package.preaload [' grid.txt'](无论是什么)?

2 个答案:

答案 0 :(得分:2)

这取决于 load 的含义。

如果要在当前目录中名为grid.txt的文件中执行代码,请执行dofile"grid.txt"。如果grid.txt位于不同的目录中,请提供其路径。

如果您要使用require执行的路径搜索,请在.txt中使用正确的路径添加package.path的模板,然后执行require"grid"。请注意,没有后缀:require加载名称标识的模块,而非路径

答案 1 :(得分:1)

如果你希望require("grid.txt")工作,如果有人尝试,那么你需要手动loadfile并运行脚本并放置它返回的任何内容(或任何需要记录的内容返回当模块没有返回任何内容时)package.loaded["grid.txt"]

或者,您可以编写自己的加载程序,只为这样的条目设置为package.preload["grid.txt"]找到并加载/运行文件,或者更一般地说,您可以自己编写一个加载器函数,将其插入{ {1}},然后只要看到" * .txt"就让它完成工作。模块来了。