使用 NLua,如何使用“require”关键字

我有一些包含我的业务逻辑的 Lua 代码,我希望使用 NLua 在 .NET 中运行。

我的一些 lua 文件当前使用“require”关键字,以便引用其他文件中的函数。现在,如果我使用 ZeroBrane Studio 等工具运行代码,那么这可以正常工作。但是,一旦我使用“DoFile”将代码加载到 NLua 中,我会遇到一些“找不到模块”的错误。

我的问题是:在 NLua 中运行代码时,我是否可以使用“require”的概念?如果不行,那么我是否需要在运行文件之前删除这些行(当然也需要确保按正确的顺序运行文件)?

更新:我认为我只需要将 Lua 文件夹添加到 package.path 中即可。我通过执行 DoString("package.path = '<my_path>' .. package.path"); 解决了这个问题。这是“最佳实践”吗?

点赞
用户7396148
用户7396148

以下是保留 markdown 格式的中文翻译:

搜索开始的根目录位置是你的可执行文件运行的位置,而不是你运行 DoString 的文件所在的位置。

以下是 NLua 需要查找的一些位置示例,以 heaps.lua 为例:

没有文件 './heaps.lua'

没有文件 './heaps/init.lua'

没有文件 './lua/heaps.lua'

示例:

可执行文件路径为 C:\foo\bar.exe

脚本路径为 C:\baz\qux.lua

qux.lua 中需要 heaps,NLua 将在 C:\foo\ 中搜索 heaps,并不会搜索 C:\baz\

2018-12-20 19:53:08