Metametodele __concat și __len în Lua: Concatenare și Lungime în Lua

Sintaxă
__concat = function(a, b)
__len = function(t)

Metametoda __concat suprascrie comportamentul operatorului de concatenare .., iar __len determină rezultatul returnat de operatorul de lungime # pe tabele.

local TextCustom = {}

local mt = {
    __concat = function(a, b)
        local strA = type(a) == "table" and a.text or tostring(a)
        local strB = type(b) == "table" and b.text or tostring(b)
        return TextCustom.nou(strA .. strB)
    end,
    __len = function(self)
        return #self.text
    end
}

function TextCustom.nou(str)
    return setmetatable({text = str}, mt)
end

local t1 = TextCustom.nou("Programare în ")
local t2 = TextCustom.nou("Lua 5.4")
local t3 = t1 .. t2

print(t3.text) -- "Programare în Lua 5.4"
print(#t3)     -- 20 caractere (invocă __len)

Atenție: __len pe tabele funcționează complet începând cu Lua 5.2. În Lua 5.1 standard, # pe tabele returna doar lungimea secvenței fără a apela metametoda.

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Metametodele __concat și __len în Lua: Concatenare și Lungime

Ai o nelămurire despre utilizarea comenzii Metametodele __concat și __len în Lua: Concatenare și Lungime 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.