Я учусь использовать Lua, точнее - библиотеки love2d, и решил попробовать организовать свой проект, используя функцию lua 'require ()'. Я знаю о package.path и о том, как он используется, но даже после того, как казалось бы, все сделано правильно, использование функции из внешнего скрипта возвращает «true». Вот подробности:
-- Package.Path edit
package.path = package.path .. ';scripts/?.lua'
-- Module requiring and inserting
-- Map module
mapModule = require('mapscript')
Продолжаем дальше в программе, внутри love.load ():
mapModule.map_generate(tilemap_1, MAP_PROPERTIES)
Рассматриваемая функция map_generate()
не должна ничего возвращать, это просто набор циклов для создания квадратной матрицы значений, которая принимает два аргумента. Я не думаю, что это так важно, поэтому, чтобы держать этот пост более аккуратным, я привожу ссылку:
https://pastebin.com/ZaE7Tzpa
Дерево файлов выглядит следующим образом:
`-main.lua
-conf.lua
-run.bat (to quickly be able to run the main.lua)
-scripts
-- mapscript.lua
-assets
`
При запуске файла я получаю следующую ошибку:
main.lua: 51: попытка индексировать глобальный «mapModule» (логическое значение)
ОДНАКО при прямом использовании map_generate()
проблема исчезает.
Если я правильно понимаю, ошибка означает, что require () не смогла загрузить скрипт. Почему это происходит? Почему использование функции напрямую работает вместо этого? Какой смысл локальной переменной, с которой вы связываете требование?