Metametodi aritmetici
I metametodi aritmetici definiscono il comportamento di un oggetto quando viene utilizzato all'interno di un'operazione aritmetica.
I metametodi aritmetici sono elencati qui:
- __add viene chiamato per l'operatore +
- __sub viene chiamato per l'operatore -
- __mul viene richiamato per l'operatore *
- __div viene chiamato per l'operatore /
- __pow è chiamato per l'operatore ^
- __mod è chiamato per l'operatore %
- __unm è chiamato per la negazione (per esempio y = -x)
Esempio
mt={}
mt["__add"] = function(a,b)
if type(b) == "string" then
a[#a+1] = b
elseif getmetatable(a) == getmetatable(b) then
for k,v in pairs(b) do
a[#a+1] = v
end
else
error("Invalid datatype for + operator!",0)
end
return a
end
t={}
setmetatable(t,mt);
-- Now use + to call the __add metamethod of the table t
t1 = t + "foo" --> t[1] = "foo"
t1 = t + "bar" --> t[2] = "bar"