Подавляющее большинство программ не ограничиваются стандартным окружением и
требуют дополнительных функций. Например, чтобы работать с компонентами, нужна
библиотека 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 |