W MTA jest bardzo ma?o skrypt?w napisanych za pomoc? klas. Skryptowanie t? technik? daje nam du?e u?atwienia i jest bardzo przejrzyste.
Przed przeczytaniem tego poradnika do ko?ca - radz? zapozna? si? z poj?ciem programowania obiektowego.
Jako nasz przyk?ad we?miemy sobie supermarket, w kt?rym b?dziemy robi? zakupy. Na pocz?tku musimy wzi??
koszyk, bo oczywi?cie nie b?dziemy nosi? zakup?w w r?kach .
Musimy zdeklarowa? nasz koszyk jako nowy obiekt, do kt?rego b?dzie wk?adali rzeczy.
[lua]
local koszyk = {} -- deklarujemy now? klas?
koszyk.__index = koszyk -- w??czamy index klasy koszyk do tej klasy
[/lua]
O co chodzi z drug? linijk?? Ma?a powt?rka. Je?li spr?bujemy wywo?a? pole w tabeli, kt?ra jest pusta, zwr?ci
nam ona [b]nil[/b]. Je?li dodamy index(czyli __index, kt?ry mo?e zawiera? funkcj? lub tabele), Lua wpierw spojrzy na zawarto?? indexu, i u?yje jego zawarto?ci w funkcjach kt?re s? wy?owywane przez ow? tablic?. Mo?e
to czyta si? zagmatwanie, ale zrozumienie tego poj?cia przyda si? w dalszej cz??ci poradnika.
Kontynuujemy tworzenie naszego koszyka.
[lua]
function koszyk:new(przedmioty)
atrybuty = {} -- tworzymy tabele, w kt?rej..
atrybuty.przedmioty = przedmioty -- ..dodamy przedmioty do klasy.
setmetatable(atrybuty, koszyk) -- ??czymy tabele z przedmiotami naszego koszyka z klas? koszyk. Od teraz klasa "pami?ta", ?e mo?emy w?o?y? do niej przedmioty.
self.__index = self -- wlaczamy index klasy do tej klasy
end
[/lua]
My?l?, ?e te... |