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

Советы по синтаксису Lua

Синтаксис Lua для функций работы с данными может различаться. Ниже приведены примеры вариантов вызова select(). Те же правила действуют и для других функций работы с данными.

Все примеры выполняют одно и то же: выбирают набор кортежей из спейса с именем 'tester', где значение поля первичного ключа равно 1. В этих примерах предполагается, что числовый идентификатор 'tester' равен 512 — это справедливо только для нашего примера с песочницей.

Варианты ссылок на объекты

Сначала рассмотрим три варианта ссылок на объекты:

-- #1 module . submodule . nametarantool> box.space.tester:select{1}-- #2 replace name with a literal in square bracketstarantool> box.space['tester']:select{1}-- #3 use a variable for the entire object referencetarantool> s = box.space.testertarantool> s:select{1}

В примерах этого руководства обычно используется форма "box.space.{tester}:" (вариант #1). Однако это дело вкуса, и на практике встречаются все перечисленные варианты.

Кроме того, в описаниях этого руководства используется синтаксис "space_object:" для ссылок на объекты-спейсы и "index_object:" для ссылок на объекты-индексы (например, box.space.{tester}.index.{primary}:).

Варианты параметров

Далее рассмотрим семь вариантов параметров:

-- #1tarantool> box.space.tester:select{1}-- #2tarantool> box.space.tester:select({1})-- #3tarantool> box.space.tester:select(1)-- #4tarantool> box.space.tester.select(box.space.tester,1)-- #5tarantool> box.space.tester:select({1},{iterator='EQ'})-- #6tarantool> variable = 1tarantool> box.space.tester:select{variable}-- #7tarantool> variable = {1}tarantool> box.space.tester:select(variable)

В Lua при вызове функции можно опустить круглые скобки (), если единственный аргумент — таблица Lua, и в примерах это иногда используется. Поэтому select{1} эквивалентно select({1}). Литералы, такие как 1 (скалярное значение) или {1} (значение — таблица Lua), можно заменять именами переменных, как в примерах #6 и #7.

Хотя в некоторых случаях фигурные скобки можно опустить, их использование предпочтительнее, так как они явно указывают на тип "таблица Lua". В примерах и описаниях этого руководства используется форма {1}. Однако это также дело вкуса, и на практике встречаются все перечисленные варианты.

Правила именования объектов

Для имен объектов базы данных действуют нестрогие правила: максимальная длина — 65 000 байт (не символов), допускается практически любой допустимый символ Unicode, включая пробелы, идеограммы и знаки препинания.

В таких случаях, чтобы избежать путаницы с операторами и разделителями Lua, для ссылок на объекты следует использовать форму с литералом в квадратных скобках (вариант #2) или форму с переменной (вариант #3). Например:

tarantool> box.space['1*A']:select{1}tarantool> s = box.space['1*A !@$%^&*()_+12345678901234567890']tarantool> s:select{1}

Запрещено использовать:

  • символы, не назначенные в Unicode (unassigned code points),
  • разделители строк и абзацев,
  • управляющие символы,
  • символ замены (U+FFFD).

Не рекомендуются: символы, которые невозможно отобразить.

Имена чувствительны к регистру, поэтому 'A' и 'a' — это не одно и то же.