Menu
Coddy logo textTech

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
end

Zwróć 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.

challenge icon

Wyzwanie

Łatwy

Utwórz alias typu o nazwie Account z:

  • owner typu string
  • balance typu number
  • deposit: (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:

  1. wyświetl saldo
  2. wpłać 250
  3. ponownie wyświetl saldo
  4. 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
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online