Дополнительные действия
Для документации этого модуля может быть создана страница Модуль:Operator/doc
---
-- @iCCup
-- wiki=iCCup
-- page=Module:Operator
--
-- Пожалуйста, посетите https://iccup.com/wiki/ чтобы узнать, как внести свой вклад
--
local Operator = {}
--- Сложение с использованием метаметода __add (a + b)
---@param a number
---@param b number
---@return number
function Operator.add(a, b)
return a + b
end
--- Вычитание с использованием метаметода __sub (a - b)
---@param a number
---@param b number
---@return number
function Operator.sub(a, b)
return a - b
end
--- Умножение с использованием метаметода __mul (a * b)
---@param a number
---@param b number
---@return number
function Operator.mul(a, b)
return a * b
end
--- Деление с использованием метаметода __div (a / b)
---@param a number
---@param b number
---@return number
function Operator.div(a, b)
return a / b
end
--- Возведение в степень с использованием метаметода __pow (a ^ b)
---@param a number
---@param b number
---@return number
function Operator.pow(a, b)
return a ^ b
end
--- Сравнение на равенство с использованием метаметода __eq (a == b)
---@param a any
---@param b any
---@return any
function Operator.eq(a, b)
return a == b
end
--- Сравнение на неравенство с использованием метаметода __eq с отрицанием результата (a ~= b)
---@param a any
---@param b any
---@return any
function Operator.neq(a, b)
return a ~= b
end
--- Возвращает функцию, получающую свойство объекта
---@param item string|number
---@return fun(tbl: table): any
function Operator.property(item)
if string.find(item, '%.') then
error('Путь еще не поддерживается в property')
end
return function(tbl)
return tbl[item]
end
end
--- Возвращает функцию вызова метода объекта
---@param funcName string|number
---@param ... any
---@return fun(obj: any, ...): any
function Operator.method(funcName, ...)
local args = {...}
return function(obj)
return obj[funcName](obj, unpack(args))
end
end
return Operator