Menu
Coddy logo textTech

Self und Methoden mit Doppelpunkt

Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 43 von 73.

Das Schreiben von rect.area(rect) funktioniert, aber du hast bereits in Lua-OOP eine bessere Möglichkeit kennengelernt: den Doppelpunkt. rect:area() ist genau derselbe Aufruf: Lua übergibt automatisch die Tabelle vor dem Doppelpunkt als erstes Argument, self.

Der Doppelpunkt hilft auch bei der Definition. function account:deposit(amount) deklariert für dich einen verborgenen ersten Parameter namens 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 ist implizit
end

function account:getBalance(): number
    return self.balance
end

Beachte, wie die Struktur self explizit deklariert: deposit: (self: Account, amount: number) -> (), obwohl der Doppelpunkt es in der Implementierung verbirgt. Der Doppelpunkt ist syntaktischer Zucker; der Parameter ist weiterhin vorhanden, und der Typ führt ihn ausdrücklich auf. Eine Methode, die nichts zurückgibt, wird mit der leeren Rückgabe -> () typisiert.

Der Aufruf folgt derselben Regel, die du bereits kennst: account:deposit(250) ist identisch mit account.deposit(account, 250). Dasselbe Laufzeitverhalten wie in deinem OOP-Kapitel: Luau fügt einfach Typen hinzu.

challenge icon

Aufgabe

Einfach

Erstelle einen Typalias namens Account mit:

  • owner vom Typ string
  • balance vom Typ number
  • deposit: (self: Account, amount: number) -> ()
  • getBalance: (self: Account) -> number

Erstelle eine Tabelle account mit dem Besitzer "Maya" und dem Kontostand 1500, und füge anschließend beide Methoden mithilfe der Syntax der Doppelpunkt-Definition (function account:deposit(amount: number) …) hinzu. deposit addiert amount zum Kontostand; getBalance gibt den aktuellen Kontostand zurück.

Verwende Doppelpunkt-Aufrufe:

  1. Gib den Kontostand aus
  2. Zahle 250 ein
  3. Gib den Kontostand erneut aus
  4. Gib den Besitzer aus

Probier es selbst

-- Schreibe Code hier
-- 1) definiere den Typ Account (Methoden nehmen self explizit im Typ)
-- 2) erstelle die Account-Tabelle, dann hänge deposit/getBalance mit Doppelpunkt-Syntax an
-- 3) balance ausgeben, 250 einzahlen, balance erneut ausgeben, owner ausgeben
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Einführung in Luau

Übe selbstständig: Online-Lua-Compiler