Lua suportă definirea logicii de comparație între obiecte folosind trei metametode fundamentale: __eq (egalitate ==), __lt (mai mic decât <) și __le (mai mic sau egal <=).
local mt = {
__eq = function(a, b)
return a.greutate == b.greutate
end,
__lt = function(a, b)
return a.greutate < b.greutate
end,
__le = function(a, b)
return a.greutate <= b.greutate
end
}
local pachetA = setmetatable({greutate = 15}, mt)
local pachetB = setmetatable({greutate = 25}, mt)
print(pachetA < pachetB) -- true (invocă __lt)
print(pachetA > pachetB) -- false (Lua traduce a > b în b < a)
print(pachetA == pachetB) -- false (invocă __eq)
Optimizare: Pentru operatorii > și >=, Lua inversează automat ordinea operanzilor și utilizează __lt respectiv __le, nefiind nevoie de metode separate.
Întrebări & Exemple de Cod:
Metametode Relaționale în Lua: __eq, __lt, __le pentru ComparațiiAi o nelămurire despre utilizarea comenzii
Metametode Relaționale în Lua: __eq, __lt, __le pentru Comparațiisau 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.