Используя NLua, как работает ключевое слово require
У меня есть некоторый код Lua, который содержит мою бизнес-логику, которую я хотел бы запустить внутри.NET, используя NLua.
Некоторые из моих файлов lua в настоящее время используют ключевое слово require для ссылки на функции в других файлах. Теперь это работает нормально, если я запускаю код, например, с помощью ZeroBrane Studio. Однако, как только я использую "DoFile" для загрузки кода в NLua, я получаю некоторые ошибки "Module not found".
Мой вопрос я могу использовать концепцию "требуют" при запуске кода внутри NLua? Если нет, то нужно ли мне удалять эти строки перед запуском DoFile для файлов (и, конечно, убедитесь, что файлы запускаются в правильном порядке)?
Обновление: я думаю, что, возможно, мне просто нужно добавить папку с файлами Lua в package.path. Я решил это, сделав DoString("package.path = '<my_path>' .. package.path");
Это "лучшая практика"?
0 ответов
Местоположение корневого каталога, в котором начинается поиск, - это место, где выполняется исполняемый файл, а не место, в котором был запущен файл. DoString
на находится.
Вот несколько примеров мест, которые NLua потребует посмотреть, используя heaps.lua
в качестве примера файла:
нет файла./heaps.lua
нет файла "./heaps/init.lua"
нет файла./lua/heaps.lua
Пример:
Путь к исполняемому файлу C:\foo\bar.exe
Путь к сценарию C:\baz\qux.lua
qux.lua
имеет требование для heaps
Нлуа будет искать в C:\foo\
для кучи и не буду искать C:\baz\
,