Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Прочие компоненты пакета

Все модули Tarantool на определенном уровне находятся внутри пакета, который соответствующим образом называется package. Существуют также прочие функции и переменные, не входящие ни в один из модулей.

Имя

Назначение

tonumber64()

Преобразование строки или Lua-числа в 64-битное целое

dostring()

Разбор и запуск произвольного фрагмента Lua-кода

package.path

Получение путей к файлам для поиска Lua-модулей

package.cpath

Получение путей к файлам для поиска C-модулей

package.loaded

Отображение Lua- или C-модулей, загруженных Tarantool

package.searchroot

Получение корневого пути для поиска по директориям

package.setsearchroot

Установка корневого пути для поиска по директориям

tonumber64(value)

Конвертация строки или 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...

dostring(lua-chunk-string[, lua-chunk-string-argument ...])

Анализ и выполнение произвольного 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...

package.path

Получение путей к файлам, используемых для поиска Lua модулей. Например, эти пути используются для поиска модулей, загружаемых с помощью директивы require().

См. также: package.searchroot()

package.cpath

Получение путей к файлам, используемых для поиска C модулей. Например, эти пути используются для поиска модулей, загружаемых с помощью директивы require().

См. также: package.searchroot()

package.loaded

Отображение Lua- или C-модулей, загруженных Tarantool, чтобы их функции и элементы были доступны. loaded показывает как предзагруженные модули, так и модули, добавленные с помощью директивы require().

См. также: package.searchroot()

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.setsearchroot([search-root])

Устанавливает корень поиска, который определяет путь к корневой директории, из которой загружаются зависимости. По умолчанию корнем поиска является текущая директория (см. 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')