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.
Întrebări & Exemple de Cod:
Metametodele __concat și __len în Lua: Concatenare și LungimeAi o nelămurire despre utilizarea comenzii
Metametodele __concat și __len în Lua: Concatenare și Lungimesau 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.