Версия:

Справочники / Рекомендации по Lua-синтаксису
Справочники / Рекомендации по Lua-синтаксису

Рекомендации по Lua-синтаксису

Рекомендации по Lua-синтаксису

В функциях управления данными Lua-синтаксис может различаться. Далее приводятся варианты таких различий на примере запросов select(). Аналогичные правила существуют и для остальных функций.

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

Способы ссылки на объект

Во-первых, есть пять способов ссылки на объект:

-- #1 модуль.подмодуль.имя
            tarantool> box.space.tester:select{1}
            -- #2 заменить имя буквенной константой в квадратных скобках
            tarantool> box.space['tester']:select{1}
            -- #3 использовать переменную для всей ссылки на объект
            tarantool> s = box.space.tester
            tarantool> s:select{1}

Для примеров в документации, как правило, используется вариант синтаксиса №1, например «box.space.tester:». Но вы можете с тем же успехом пользоваться любым из пяти описанных выше вариантов.

Также описания в руководстве используют синтаксис типа «space_object:» для ссылки на спейсы и «index_object:» для ссылки на индексы (например, box.space.tester.index.primary:).

Способы задания параметров

Затем есть семь способов задания параметров:

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

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

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

Rules for object names

Database objects have loose rules for names: the maximum length is 65000 bytes (not characters), and almost any legal Unicode character is allowed, including spaces, ideograms and punctuation.

In those cases, to prevent confusion with Lua operators and separators, object references should have the literal-in-square-brackets form (#2), or the variable form (#3). For example:

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

Disallowed:

  • characters which are unassigned code points,
  • line and paragraph separators,
  • control characters,
  • the replacement character (U+FFFD).

Not recommended: characters which cannot be displayed.

Names are «case sensitive», so „A“ and „a“ are not the same.