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"