Различают глобальные и локальные переменные. Область видимости локальной переменной ограничена блоком, в котором она определена.
Для определения локальных переменных используется оператор\
``local`` *список переменных*
Локальными переменными являются также параметры функции.
Глобальными считаются все переменные не объявленные явно как локальные.
Для вычислений используются следующие операции (в порядке уменьшения приоритета):
||.draw||Операция|Назначение|Метаметод
--|--|--
*a*``[``*b*``]``\
или *a*``.``*b*\
*a*``()``|обращение к\
элементу\
вызов|``__index`` или ``__newindex``, если \
присваивание и *b* не существует\
``__call``
*a*``^``*b*|возведение в степень|``__pow``
``not`` *a*\
``#``*a*\
``-``*a*\
``~``*a*|логическое нет\
длина\
смена знака\
поразрядное нет| \
``__len``\
``__``unm\
``__``bnot
*a*``*``*b*\
*a*``/``*b*\
*a*``//``*b*\
*a*``%``*b*|умножение\
деление\
деление нацело\
остаток от деления|``__mul``\
``__div``\
``__idiv``\
``__mod``
*a*``+``*b*\
*a*``-``*b*|сложение\
вычитание|``__add``\
``__sub``
*a*``..``*b*|конкатенация|``__concat``
*a*``<<``*b*\
*a*``>>``*b*|сдвиг влево\
сдвиг вправо|``__shl``\
``__shr``
*a*``&``*b*|поразрядное и|``__band``
*a*``~``*b*|поразрядное исключающее или|``__bxor``
*a*``\|``*b*|поразрядное или|``__bor``
*a*``<``*b*\
*a*``>``*b*\
*a*``<=``*b*\
*a*``>=``*b*\
*a*``==``*b*\
*a*``~=``*b*|сравнения|``__lt``\
(b<a)\
``__le`` или not(b<a)\
(b<=a)\
``__eq``\
not(a==b)
*a* and *b*|логическое и|
*a* or *b*|логическое или|
*a*``,`` *b*|(справа налево) добавление *a* в список аргументов, элементов таблицы или результатов, \
если *a* список, то используется только первый элемент списка *a*|
``(``*a*``)``|скобки для указания порядка вычислений,\
если *a* список, то результатом является первый элемент списка *a*|
``{``...``}``|создание таблицы|