有没有办法阻止lua翻译' a.b'到' a / b'当我需要' a.b'?

时间:2015-01-28 10:31:37

标签: lua require

例如:

require('a.b.c/foo.lua')

Lua引擎会将'a.b.c / ...'转换为'a / b / c / ...'来搜索模式列表中的文件,对吗? 当'a.b.c'是真正的文件夹名称时会有问题吗?如果是这样,如何解决?

2 个答案:

答案 0 :(得分:2)

如果您的模块位于包含.作为其名称的一部分的目录中,则将其与require一起提取将很困难,因为无法逃脱&#39} #39; .因此\替换尚未完成。

然而,通过玩package.path,可能仍然可以指向lua间接寻找正确的位置:

local restorepath = package.path
package.path = "./a.b.c/?.lua"
require 'foo'
package.path = restorepath

但我建议您首先尝试重新设置项目目录结构,以便更好地使用lua' require。否则,你必须继续与你可能拥有的其他模块一起做上述舞蹈。

答案 1 :(得分:1)

据我所知,这种翻译不符合规范。所以它可能工作,但也可能不起作用。它可能在某些平台上崩溃(即在Linux和Mac上运行而不在Windows上运行)。它可能适用于Lua的一个版本,而不适用于下一个版本。所以我不推荐它。

确保与平台无关的方法是到处使用点。另外,我建议不要将.lua部分放在最后,require并不总能解决这个问题:

require('a.b.c.foo')