有没有办法阻止lua翻译';a、 b';至';a/b&x27;当我需要';a、 b';?

有没有办法阻止lua翻译';a、 b';至';a/b&x27;当我需要';a、 b';?,lua,require,Lua,Require,例如: require('a.b.c/foo.lua') Lua引擎将把“a.b.c/…”翻译成“a/b/c/…”来搜索模式列表中的文件,对吗? 当“a.b.c”是真实的文件夹名时会有任何问题吗?如果是这样的话,怎么解决呢?据我所知,这种翻译不符合规范。所以它可能会起作用,但也可能不起作用。它可能会在某些平台上崩溃(即在Linux和Mac上工作,而不是在Windows上)。它可能在Lua的一个版本中工作,而在下一个版本中不工作。所以我不推荐它 确保您保持平台不可知的方法是在任何地方使用点。另外

例如:

require('a.b.c/foo.lua')
Lua引擎将把“a.b.c/…”翻译成“a/b/c/…”来搜索模式列表中的文件,对吗?
当“a.b.c”是真实的文件夹名时会有任何问题吗?如果是这样的话,怎么解决呢?

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

确保您保持平台不可知的方法是在任何地方使用点。另外,我建议不要将
.lua
部分放在末尾,
require
也不能很好地解决这一问题:

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

如果您的模块位于包含
作为其名称一部分的目录中,则使用
require
将其拉入将很困难,因为无法“转义”该
,因此未完成
\
替换

但是,仍然可以通过使用
包来间接指示lua查看正确的位置。path

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

但我建议您首先尝试重新设置项目目录结构,以便更好地与lua的
require
配合使用。否则,您将不得不继续与您可能拥有的其他模块进行上述操作。

如果“a.b.c”是一个包含foo.lua的文件夹,该怎么办?将点转换为路径分隔符的手册中有:。@lfree:
require('a.b.c.foo')
在这种情况下可以工作,应该可以。您是否删除了结尾处的“.lua”部分?您是对的!当我去掉“.lua”后缀时,它真的很有效。非常感谢@_@<代码>要求加载模块,而不是文件。您不能拥有名为
a.b.c
的文件夹。为什么我不能拥有名为
a.b.c
的文件夹?因为Lua将点转换为路径分隔符。错误消息显示:
no file'/usr/local/share/lua/5.2/a/b/c/foo/lua.lua'
。是的,这正是我试图理解的问题的标题。