例: 我在一个名为'tuna'的文件夹中,想要一个'tuna'之前的文件:
Ex:require "some-file.lua/tuna"
但我不知道怎么做。
答案 0 :(得分:3)
您应该了解Lua在需要时如何搜索文件。
package.path
是一个字符串,用于确定搜索所需文件的位置和方式。通常看起来像这样:
"/some/path/?.lua; /some/other/path/?.lua; ?.lua;"
当您调用require("module")
时,Lua会获取package.path
中字符串中包含的第一个路径(路径以分号分隔,因此第一个路径为/some/path/?.lua
),并替换字符串中的?
,其中包含传递给require的字符串。
所以Lua首先会在/some/path/module.lua
搜索您的模块。
如果找到该文件,则执行该文件,否则将继续执行下一条路径:它将在/some/other/path/module.lua
处搜索,最后在module.lua
搜索。
现在,如果您的目录如下所示:
Outer_dir = {
tuna = {
main.lua,
tuna.lua
},
module.lua
} --didn't know how to represent a tree lol
而且,如果您从main.lua通常只需输入require("tuna")
来访问tuna.lua,那么您的package.path
必须与/Outer_dir/tuna/?.lua
类似。为了确保你可以要求module.lua,这是“之前”tuna.lua,你应该将你的package.path
字符串更改为/Outer_dir/?.lua
(这意味着你应该使用require("tuna/tuna") to access tuna.lua) or to
/ Outer_dir / tuna /?。lua; / Outer_dir /?。lua so that either
require(“tuna”)and
require(“module”)`将完美运作。