例如:
require('a.b.c/foo.lua')
Lua引擎会将'a.b.c / ...'转换为'a / b / c / ...'来搜索模式列表中的文件,对吗? 当'a.b.c'是真正的文件夹名称时会有问题吗?如果是这样,如何解决?
答案 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')