2016-09-08 52 views

回答

3

你应该学习Lua如何在需要时搜索文件。

package.path是一个字符串,它建立了它应该在哪里以及如何搜索所需的文件。它通常是这样的:

"/some/path/?.lua; /some/other/path/?.lua; ?.lua;" 

当你调用require("module"),Lua的发生在package.path字符串中包含的(路径由分号隔开,所以第一个路径将是/some/path/?.lua)的第一路径,并取代?在字符串中传递给需要的字符串。

So 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你平时访问tuna.lua只是打字require("tuna"),那么你的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要求(“金枪鱼”)and要求(“模块”)`将正常工作。

相关问题