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 damals in Lua OOP einen besseren Weg kennengelernt: den Doppelpunkt (colon). rect:area() ist genau derselbe Aufruf — Lua übergibt die table vor dem colon automatisch als erstes Argument, self.

Der colon hilft auch bei der Definition. function account:deposit(amount) deklariert automatisch einen versteckten ersten Parameter namens self für dich:

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 der Type self explicitly deklariert — deposit: (self: Account, amount: number) -> () —, obwohl der colon ihn in der Implementierung verbirgt. Der colon ist Syntaktischer Zucker (Syntactic Sugar); der Parameter ist weiterhin vorhanden, und der type drückt ihn explizit aus. Eine Methode, die nichts zurückgibt, wird mit dem leeren Rückgabetyp -> () typisiert.

Das Aufrufen 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 lediglich Typen hinzu.

challenge icon

Aufgabe

Einfach

Erstelle einen Typ-Alias 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 owner "Maya" und balance 1500, und hänge dann beide Methoden unter Verwendung der colon definition-Syntax an (function account:deposit(amount: number) …). deposit addiert amount zu balance; getBalance gibt den aktuellen balance-Wert zurück.

Verwende colon calls, um:

  1. balance auszugeben
  2. 250 zu deposit
  3. balance again auszugeben
  4. owner auszugeben

Probier es selbst

-- Schreibe Code hier
-- 1) definiere Typ Account (Methoden nehmen self explizit im Typ)
-- 2) erstelle die account-Tabelle, dann hänge deposit/getBalance mit Doppelpunkt-Syntax an
-- 3) gib balance aus, deposit 250, gib balance erneut aus, gib owner aus
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