Библиотеки

Библиотеки

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

  1. /lib/?.lua
  2. /usr/lib/?.lua
  3. /home/lib/?.lua
  4. ./?.lua
  5. /lib/?/init.lua
  6. /usr/lib/?/init.lua
  7. /home/lib/?/init.lua
  8. ./?/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

Подробнее

results for ""

    No results matching ""