Lua permite supraîncărcarea tuturor operatorilor aritmetici pe tabele și tipuri de date prin intermediul metametodelor dedicate: adunare, scădere, înmulțire, împărțire reală și întreagă, modulo, exponențiere și negare unară.
local Vector2D = {}
Vector2D.__index = Vector2D
local mt = {
__add = function(a, b)
return Vector2D.nou(a.x + b.x, a.y + b.y)
end,
__sub = function(a, b)
return Vector2D.nou(a.x - b.x, a.y - b.y)
end,
__unm = function(a) -- Negare unară (-v)
return Vector2D.nou(-a.x, -a.y)
end
}
function Vector2D.nou(x, y)
return setmetatable({x = x, y = y}, mt)
end
local v1 = Vector2D.nou(10, 20)
local v2 = Vector2D.nou(5, 15)
local v3 = v1 + v2 -- Folosește __add: (15, 35)
local v4 = -v3 -- Folosește __unm: (-15, -35)
print(v3.x, v3.y)
Metametode disponibile: __add (+), __sub (-), __mul (*), __div (/), __idiv (// – diviziune întreagă din Lua 5.3+), __mod (%), __pow (^), __unm (- unar).
Întrebări & Exemple de Cod:
Metametode Aritmetice în Lua: __add, __sub, __mul, __div, __powAi o nelămurire despre utilizarea comenzii
Metametode Aritmetice în Lua: __add, __sub, __mul, __div, __powsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.