Self i metody z dwukropkiem
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 43 z 73.
Zapis rect.area(rect) działa, ale już w rozdziale o OOP w Lua poznasz lepszy sposób: dwukropek. rect:area() to dokładnie to samo wywołanie: Lua automatycznie przekazuje tabelę przed dwukropkiem jako pierwszy argument, self.
Dwukropek przydaje się również przy definiowaniu. function account:deposit(amount) deklaruje za Ciebie ukryty pierwszy parametr o nazwie self:
type Account = {
owner: string,
balance: number,
deposit: (self: Account, amount: number) -> (),
getBalance: (self: Account) -> number,
}
local account = {owner = "Maya", balance = 1500}
function account:deposit(amount: number)
self.balance += amount -- self jest niejawne
end
function account:getBalance(): number
return self.balance
endZwróć uwagę, że kształt jawnie deklaruje self: deposit: (self: Account, amount: number) -> (), mimo że w implementacji dwukropek je ukrywa. Dwukropek to tylko uproszczony zapis; parametr nadal istnieje, a typ go określa. Metoda, która niczego nie zwraca, ma pusty typ zwracanej wartości -> ().
Wywołanie działa zgodnie z tą samą znaną Ci zasadą: account:deposit(250) jest identyczne z account.deposit(account, 250). Zachowanie w czasie działania jest takie samo jak w rozdziale o OOP: Luau po prostu dodaje typy.
Wyzwanie
ŁatwyUtwórz alias typu o nazwie Account z:
ownertypustringbalancetypunumberdeposit:(self: Account, amount: number) -> ()getBalance:(self: Account) -> number
Utwórz tabelę account z właścicielem "Maya" i saldem 1500, a następnie dołącz obie metody, używając składni definicji z dwukropkiem (function account:deposit(amount: number) …). deposit dodaje amount do salda; getBalance zwraca bieżące saldo.
Używając wywołań z dwukropkiem:
- wyświetl saldo
- wpłać
250 - ponownie wyświetl saldo
- wyświetl właściciela
Spróbuj swoich sił
-- Napisz kod tutaj
-- 1) zdefiniuj typ Account (metody jawnie przyjmują self w definicji typu)
-- 2) utwórz tabelę konta, a następnie dodaj deposit/getBalance, używając składni z dwukropkiem
-- 3) wyświetl saldo, wpłać 250, ponownie wyświetl saldo, wyświetl właściciela
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Wprowadzenie do Luau
1Pierwsze kroki z Luau
Czym jest Luau?Dlaczego warto używać Luau?Twój pierwszy kod w LuauSprawdzanie typów i tryby błędówPodsumowanie: Wprowadzenie do Luau4Praca z funkcjami
Typowanie parametrów i wartości zwracanychTypowanie funkcji anonimowychFunkcje niczego nie zwracająceParametry opcjonalneDomyślne wartości parametrówFunkcje wariadyczneDefiniowanie typów funkcjiPodsumowanie: funkcje z typami2Typy podstawowe
Typy podstawowe: num, str, boolTyp „any”: furtka awaryjnaTyp „unknown”Typy Nil i opcjonalneInferencja typów w praktyceJawne adnotacje typówPowtórka: ćwiczenie typów podstawowych5Aliasy, typy sumy i przekroju
Aliasy typów dla typów prostychTypy sumyPraca z typami sumyTypy literałoweTypy przekrojuŁączenie aliasów typówPodsumowanie: zaawansowane kombinacje typów3Typowane tabele: tablice i mapy
Tablice typowaneDodawanie i odczytywanie elementówCzym jest typ mapy?Deklarowanie map i dostęp do nichIterowanie po tabelachTabele o mieszanej strukturzeWielowymiarowe tablice typowanetable.unpack i varargsPodsumowanie: tablice i mapy6Typowanie kształtów tabel
Adnotacje kształtów w miejscuAliasy typów dla kształtówWłaściwości opcjonalneKształty a luźne tabeleRozszerzanie kształtówDodawanie metod do kształtówSelf i metody z dwukropkiemPodsumowanie: definiowanie kształtów tabelPoćwicz samodzielnie: Kompilator Luau online