Luau nu dispune de cuvântul-cheie class din alte limbaje orientate pe obiecte, dar implementează modelul OOP bazat pe prototipuri prin intermediul metatabelelor și al metametodei __index. Când un membru sau o metodă nu este găsită direct pe instanță, Luau caută automat în tabela prototip delegată.
Implementarea unei clase Jucator în Luau OOP
--!strict
local Jucator = {}
Jucator.__index = Jucator
export type TipJucator = typeof(setmetatable({} :: {
nume: string,
viata: number,
viteza: number
}, Jucator))
-- Constructorul clasei:
function Jucator.new(nume: string): TipJucator
local self = setmetatable({}, Jucator)
self.nume = nume
self.viata = 100
self.viteza = 16
return self
end
-- Metodă pe instanță:
function Jucator:PrimesteDaune(cantitate: number)
self.viata = math.max(0, self.viata - cantitate)
print(`[Jucator] {self.nume} mai are {self.viata} viață.`)
end
-- Utilizare:
local erou = Jucator.new("Radu_Knight")
erou:PrimesteDaune(35)
Întrebări & Exemple de Cod:
Metatabele și Programare Orientată pe Obiecte (OOP) cu setmetatable în LuauAi o nelămurire despre utilizarea comenzii
Metatabele și Programare Orientată pe Obiecte (OOP) cu setmetatable în Luausau 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.