Подавляющее большинство программ не ограничиваются стандартным окружением и
требуют дополнительных функций. Например, чтобы работать с компонентами, нужна
библиотека component, а для того чтобы записать таблицу в файл, пригодится
serialization.
Для подключения библиотек служит функция require. Она по умолчанию
присутствует в глобальном окружении. Это означает, что её можно спокойно
использовать и не бояться.
Нужная библиотека задаётся первым параметром. Ищется она следующим образом:
test.library становится
test/library, например.package.path, содержащая пути, где ищется библиотека,
в порядке поиска. Пути в строке отделяются точкой с запятой. Например,
для /lib/?.lua;/usr/lib/?.lua;./?.lua пути равны /lib/?.lua,
/usr/lib/?.lua, ./?.lua.package.path знак вопроса заменяется на значение
из первого шага. /lib/?.lua для test.library
становится /lib/test/library.lua.return, сохраняется в кэш и возвращается.По умолчанию значение require ищет в таком порядке:
/lib/?.lua/usr/lib/?.lua/home/lib/?.lua./?.lua/lib/?/init.lua/usr/lib/?/init.lua/home/lib/?/init.lua./?/init.luaТаким образом можно делать библиотеки из нескольких файлов и организовывать их.
В таблице ниже приведены файлы и соответствующие параметры для require:
| Путь к файлу | Название либы |
|---|---|
/lib/test.lua |
test |
/usr/lib/my-library/init.lua |
my-library |
/usr/lib/my-library/file.lua |
my-library.file |
/home/lib/rip/unrip/init.lua |
rip.unrip |
/home/lib/rip/unrip/blah.lua |
rip.unrip.blah |