Metametode pe Biți în Lua 5.3+: __band, __bor, __bxor, __shl, __shr în Lua

Sintaxă
__band, __bor, __bxor, __bnot, __shl, __shr

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

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Metametode pe Biți în Lua 5.3+: __band, __bor, __bxor, __shl, __shr

Ai o nelămurire despre utilizarea comenzii Metametode pe Biți în Lua 5.3+: __band, __bor, __bxor, __shl, __shr 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.