Metametoda __call în Lua: Obiecte Apelabile ca Funcții (Functors) în Lua

Sintaxă
__call = function(table, ...)

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.

Comunitate & Schimb de cunoștințe

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

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.