有没有办法阻止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'
。是的,这正是我试图理解的问题的标题。