是否可以从扩展名不是.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'](无论是什么)?
答案 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"就让它完成工作。模块来了。