Metametoda __call permite tratarea tabelelor ca și cum ar fi funcții obișnuite. Când un tabel este apelat cu paranteze rotunde t(), Lua caută metametoda __call în metatabela sa.
local Multiplicator = {}
Multiplicator.__index = Multiplicator
function Multiplicator.nou(factor)
local instanta = {factor = factor}
return setmetatable(instanta, {
__call = function(self, numar)
return self.factor * numar
end
})
end
local dubleaza = Multiplicator.nou(2)
local tripleaza = Multiplicator.nou(3)
-- Apelarea obiectelor direct ca funcții:
print(dubleaza(10)) -- 20
print(tripleaza(10)) -- 30
Aplicabilitate: Ideal pentru crearea de obiecte de configurare dinamice, validatoare fluide, generatoare de stări sau instanțierea constructorilor fără cuvântul new.
Întrebări & Exemple de Cod:
Metametoda __call în Lua: Obiecte Apelabile ca Funcții (Functors)Ai o nelămurire despre utilizarea comenzii
Metametoda __call în Lua: Obiecte Apelabile ca Funcții (Functors)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.