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
endBeachte, 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.
Aufgabe
EinfachErstelle einen Typalias namens Account mit:
ownervom Typstringbalancevom Typnumberdeposit:(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:
- Gib den Kontostand aus
- Zahle
250ein - Gib den Kontostand erneut aus
- 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
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
1Erste Schritte mit Luau
Was ist Luau?Warum Luau nutzen?Dein erster Luau-CodeTypprüfung & FehlermodiZusammenfassung: Einführung in Luau4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von anonymen FunktionenFunktionen ohne RückgabewertOptionale ParameterStandard-ParameterwerteVariadische FunktionenDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen2Grundtypen
Grundlegende Typen: num, str, boolDer Typ 'any': Der AuswegDer Typ 'unknown'Nil- & optionale TypenTypinferenz in der PraxisExplizite TypannotationenZusammenfassung: Praxis zu Grundtypen5Typ-Aliase, Union-Typen und Schnittmengen-Typen
Typ-Aliase für PrimitivenUnion-TypenArbeiten mit Union-TypenLiterale TypenSchnittmengen-Typen (Intersection Types)Kombination von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen3Typisierte Tabellen: Arrays & Maps
Typisierte ArraysHinzufügen und Lesen von ElementenWas ist ein Map-Typ?Deklarieren und Zugreifen auf MapsIterieren von TabellenGemischt-strukturierte TabellenMehrdimensionale typisierte Arraystable.unpack und VarargsZusammenfassung: Arrays und Maps6Typisieren von Tabellen-Shapes
Inline-Shape-AnnotationenTyp-Aliase für ShapesOptionale EigenschaftenShapes vs. lose TabellenShapes erweiternMethoden zu Shapes hinzufügenSelf und Methoden mit DoppelpunktZusammenfassung: Definieren von Tabellen-ShapesÜbe selbstständig: Online-Lua-Compiler