Советы по синтаксису 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' — это не одно и то же.