Metametode Aritmetice în Lua: __add, __sub, __mul, __div, __pow în Lua

Sintaxă
__add, __sub, __mul, __div, __idiv, __mod, __pow, __unm

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).

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Metametode Aritmetice în Lua: __add, __sub, __mul, __div, __pow

Ai o nelămurire despre utilizarea comenzii Metametode Aritmetice în Lua: __add, __sub, __mul, __div, __pow sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.