Методы метатаблиц


__index(self, key) — функция или таблица, с помощью которых оригинальная таблица ищет ключи, если их не существует;
__newindex(self, key, value) — функция, как добавлять в таблицу *новые* ключи, на уже существующие — не действует;
__call(self, ...) — фунция, которая вызовется когда таблицу попробуют вызвать как как функцию;
__tostring(self) — функция, вызывающаяся при попытке преобразовать таблицу в строку
__concat(a, b) — функция, вызывающаяся при попытке конкатенации таблицы с чем либо
__metatable — значение, которое возвращается попытке взять метатаблицу у данной таблицы, позволяет скрывать метатаблицы;
__mode — строка, управляющая связями в таблице при сборке мусора, k=слабые ключи, v=слабые значения;
__gc(self) — функция, которая будет вызвана при сборе userdata(5.1+) или таблицы(5.2+) мусорщиком, если очень хочется в 5.1 — есть способ применения;
__len(self) — функция которая будет вызываться при попытке вычисления длины таблицы, с помощью оператора # (5.2+);
__pairs(self) — функция, альтернатива итератора pairs (5.2+);
__ipairs(self) — функция, альтернатива ipairs (5.2+);

__add — (+) сложение;
__sub — (-) вычитание;
__mul — (*) умножение;
__div — (/) деление;
__pow — (^) возведение в степень;
__mod — (%) деление по модулю;
__idiv — (//) деление с изъятием целой части (5.3+);
__eq — (==) сравнение равенства;
__lt — (<) сравнение «меньше чем», в обратную сторону выполняется автоматически, реверсируя аргументы;
__le — (<=) сравнение «меньше или равно»;

__band — (&) И;
__bor — (|) ИЛИ;
__bxor — (~) исключающее ИЛИ (a ~ b);
__bnot — (~) НЕТ (~a);
__bshl — (<<) битовый сдвиг влево;
__bshr — (>>) битовый сдвиг вправо.