我有一些包含我的业务逻辑的Lua代码,我想使用NLua在.NET中运行。
我的一些lua文件目前使用"要求"关键字以便引用其他文件中的函数。现在,如果我使用例如运行代码,这可以正常工作ZeroBrane工作室。但是,一旦我使用" DoFile"要将代码加载到NLua中,我得到一些"模块未找到"错误。
我的问题是;在NLua中运行代码时,我可以使用" require"的概念吗?如果没有,那么在对文件运行DoFile之前是否需要删除这些行(当然要确保以正确的顺序运行文件)?
更新:我想也许我只需要将我的Lua文件夹添加到package.path。我通过做Arrays.compare(arr1,arr2)
解决了这个"最佳实践"?
答案 0 :(得分:1)
搜索开始的根目录位置是可执行文件运行的位置,而不是运行DoString
的文件所在的位置。
以下是使用heaps.lua
作为示例文件的NLua所需的位置示例:
没有文件'./heaps.lua'
没有文件'./heaps/init.lua'
没有文件'./lua/heaps.lua'
示例:
可执行路径C:\foo\bar.exe
脚本路径C:\baz\qux.lua
qux.lua
需要heaps
,NLua将在C:\foo\
中搜索堆,而不会搜索C:\baz\
。