Menu
CoddyTech

Methoden zu Shapes hinzufügen

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

Aus deinem Lua-OOP-Kapitel weißt du, dass Tabellen Funktionen wie jeden anderen Wert enthalten können. Shapes können auch diese Funktionsfelder beschreiben: So wird eine Shape zu einem kleinen Vertrag aus Daten und Verhalten.

Ein Methodenfeld verwendet die Syntax für Funktionstypen, die du im Funktionskapitel gelernt hast. Sein erster Parameter heißt üblicherweise self, also die Tabelle, zu der die Methode gehört, und die Shape kann sogar auf sich selbst verweisen:

type Greeter = {
    name: string,
    greet: (self: Greeter) -> string,
}

Um die Shape umzusetzen, speicherst du eine Funktion im Feld und gibst ihr diesen self-Parameter:

local greeter: Greeter = {
    name = "Ana",
    greet = function(self: Greeter): string
        return `Hello, I'm {self.name}`
    end,
}

Wenn du sie aufrufst, musst du die Tabelle selbst als self übergeben: greeter.greet(greeter). Über self liest die Methode die Felder der jeweiligen Tabelle aus, für die sie aufgerufen wurde.

Die Tabelle zweimal zu schreiben, wirkt umständlich, und du kennst bereits Lua’s Abhilfe: den Doppelpunkt. In der nächsten Lektion wird die :-Syntax mit diesen typisierten Shapes verknüpft.

challenge icon

Aufgabe

Einfach

Gib einer Rechteckform eine Methode, die ihre Fläche berechnet.

  1. Schreibe type Rectangle = {width: number, height: number, area: (self: Rectangle) -> number}.
  2. Erstelle local rect: Rectangle mit der Breite 4, der Höhe 6 und area = function(self: Rectangle): number, die self.width * self.height zurückgibt.
  3. Gib rect.area(rect) aus, dann rect.width.

Klicke auf Run Code: Die Ausgabe zeigt 24 und 4.

Probier es selbst

-- 1) Typ Rectangle mit width, height und einer area-Methode
-- 2) lokales rect: Rectangle (width 4, height 6) mit implementierter area-Methode
-- 3) Gib die Fläche aus, dann die Breite

Alle Lektionen in Einführung in Luau

Übe selbstständig: Online-Luau-Compiler