Începând cu Lua 5.3, operatorii pe biți pot fi supraîncărcați pe obiecte prin metametode specifice, facilitând manipularea măștilor binare, buffer-elor sau structurilor hardware emulate.
local BitSet = {}
BitSet.__index = BitSet
local mt = {
__band = function(a, b) -- Operatorul & (AND)
return BitSet.nou(a.val & b.val)
end,
__bor = function(a, b) -- Operatorul | (OR)
return BitSet.nou(a.val | b.val)
end,
__shl = function(a, n) -- Operatorul << (Shift Left)
return BitSet.nou(a.val << n)
end
}
function BitSet.nou(val)
return setmetatable({val = val}, mt)
end
local masca1 = BitSet.nou(0x0F)
local masca2 = BitSet.nou(0xF0)
local combinat = masca1 | masca2 -- Invocă __bor
print(string.format("0x%X", combinat.val)) -- 0xFF
Metametode pe biți: __band (&), __bor (|), __bxor (~ binar), __bnot (~ unar), __shl (<<), __shr (>>).
Întrebări & Exemple de Cod:
Metametode pe Biți în Lua 5.3+: __band, __bor, __bxor, __shl, __shrAi o nelămurire despre utilizarea comenzii
Metametode pe Biți în Lua 5.3+: __band, __bor, __bxor, __shl, __shrsau 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.