Прочие компоненты пакета
Все модули Tarantool на определенном уровне находятся внутри пакета,
который соответствующим образом называется package. Существуют также
прочие функции и переменные, не входящие ни в один из модулей.
Имя | Назначение |
|---|---|
Преобразование строки или Lua-числа в 64-битное целое | |
Разбор и запуск произвольного фрагмента Lua-кода | |
Получение путей к файлам для поиска Lua-модулей | |
Получение путей к файлам для поиска C-модулей | |
Отображение Lua- или C-модулей, загруженных Tarantool | |
Получение корневого пути для поиска по директориям | |
Установка корневого пути для поиска по директориям |
Конвертация строки или Lua-числа в 64-битное целое число. Входное
значение может быть выражено десятичным, двоичным (например, 0b1010)
или шестнадцатеричным (например, -0xffff) числом. Результат может
использоваться в арифметике, причем скорее в 64-битной целочисленной
арифметике, а не в арифметике в системе с плавающей запятой. (Операции
с неконвертированными Lua-числами выполняются в арифметике в системе с
плавающей запятой.) Функция tonumber64() в Tarantool является
глобальной.
Пример:
tarantool> type(123456789012345), type(tonumber64(123456789012345))---- number- number...tarantool> i = tonumber64('1000000000')---...tarantool> type(i), i / 2, i - 2, i * 2, i + 2, i % 2, i ^ 2---- number- 500000000- 999999998- 2000000000- 1000000002- 0- 1000000000000000000...
Анализ и выполнение произвольного Lua-кода. Данная функция используется преимущественно для определения и выполнения Lua-кода без необходимости внесения изменений в глобальное Lua-окружение.
Параметры:
lua-chunk-string(string) — Lua-кодlua-chunk-string-argument(lua-value) — ноль или более скалярных значений, которые будут добавлены к элементам Lua-фрагмента или подставлены вместо них
Возвращает
значение, возвращаемое Lua-фрагментом кода
Возможные ошибки:
Ошибка компиляции появляется как Lua-ошибка.
Пример:
tarantool> dostring('abc')---error: '[string "abc"]:1: ''='' expected near ''<eof>'''...tarantool> dostring('return 1')---- 1...tarantool> dostring('return ...', 'hello', 'world')---- hello- world...tarantool> dostring([[> local f = function(key)> local t = box.space.tester:select{key}> if t ~= nil then> return t[1]> else> return nil> end> end> return f(...)]], 1)---- null...
Получение путей к файлам, используемых для поиска Lua
модулей. Например, эти пути используются для
поиска модулей, загружаемых с помощью директивы require().
См. также: package.searchroot()
Получение путей к файлам, используемых для поиска C
модулей. Например, эти пути используются для
поиска модулей, загружаемых с помощью директивы require().
См. также: package.searchroot()
Отображение Lua- или C-модулей, загруженных Tarantool, чтобы их функции
и элементы были доступны. loaded показывает как предзагруженные
модули, так и модули, добавленные с помощью директивы require().
См. также: package.searchroot()
Возвращает текущий корень поиска, который определяет путь к корневой директории, из которой загружаются зависимости. По умолчанию корнем поиска является текущая директория.
Пример:
Предположим, приложение имеет следующую структуру:
/home/testuser/myapp├── .rocks/share/tarantool/│ └── foo.lua├── init.lua└── modules└── bar.lua
В этом случае модули размещены в той же директории, что и файл
инициализации приложения. Если
запустить приложение с помощью
команды tarantool из директории myapp, ...
/home/testuser/myapp$ tarantool init.lua
... корнем поиска будет /home/testuser/myapp, и Tarantool
автоматически находит все модули в этой директории. Это означает, что
для загрузки модулей foo и modules.bar в init.lua достаточно
добавить соответствующие директивы require:
-- init.lua --require('foo')require('modules.bar')
Начиная с 2.11.0, приложение также можно запустить с помощью команды
tarantool из директории, отличной от myapp:
/home/testuser$ tarantool myapp/init.lua
В этом случае путь к файлу инициализации (/home/testuser/myapp)
добавляется к путям поиска модулей.
Для загрузки модулей, размещенных вне пути к директории приложения, используйте package.setsearchroot().
Устанавливает корень поиска, который определяет путь к корневой директории, из которой загружаются зависимости. По умолчанию корнем поиска является текущая директория (см. package.searchroot()).
Параметры:
search-root(string) — относительный или абсолютный путь к корню поиска. Еслиsearch-root— относительный путь, он преобразуется в абсолютный. Этот аргумент можно опустить или задать значение box.NULL, чтобы сбросить корень поиска до текущей директории.
Пример:
Предположим, внешние модули хранятся вне директории приложения, например:
/home/testuser/├── myapp│ └── init.lua└── mymodules├── .rocks/share/tarantool/│ └── foo.lua└── modules└── bar.lua
В этом случае можно указать путь /home/testuser/mymodules в качестве
корня поиска для модулей следующим образом:
-- init.lua --package.setsearchroot('/home/testuser/mymodules')
После этого модули foo и bar можно загрузить с помощью директивы
require():
-- init.lua --require('foo')require('modules.bar')