| Обработчик | Оператор Lua | Примечание |
|---|---|---|
| __add(op1, op2) | + | сложение |
| __sub(op1, op2) | - | вычитание |
| __mul(op1, op2) | * | умножение |
| __div(op1, op2) | / | деление |
| __mod(op1, op2) | % | деление по модулю |
| __pow(op1, op2) | ^ | возведение в степень |
| __unm(op) | - | унарный минус |
| __concat(op1, op2) | .. | конкатенация (склейка) |
| __len(op) | # | унарный оператор взятия длины |
| __eq(op1, op2) | == | оператор "равно" |
| __lt(op1, op2) | < | оператор "меньше" |
| __le(op1, op2) | <= | оператор "меньше либо равно" |
| __index(op, key) | [] | оператор обращения по ключу вызовется если, например, вызвать local x = data1[1] |
| __newindex(op, key, value) | [] | оператор присвоения нового значения по ключу если сделать эту функцию пустой, то таблица станет "readonly", то есть в нее нельзя будет добавить новое поле со значением вызовется если, например, вызвать data1[1] = 1 |
| __call(op, ...) | () | оператор вызова функции вызовется если, например, вызвать data1(1, 2, 3) в обработчик __call первым параметром придет операнд (в нашем случае data1), а следующими параметрами будут те параметры, что стояли в скобках (в нашем случае 1, 2, 3). |