Menu
Coddy logo textTech

Methoden zu Shapes hinzufügen

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

Aus deinem Lua-OOP-Kapitel weißt du, dass Tabellen Funktionen genauso wie jeden anderen Wert enthalten können. Shapes können auch diese Funktionsfelder beschreiben: Sie verwandeln einen Shape in einen kleinen Vertrag über Daten und Verhalten.

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

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

Um den Shape zu implementieren, speicherst du eine Funktion im Feld und versiehst sie mit diesem self-Parameter:

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

Der Aufruf bedeutet, dass du die Tabelle selbst als self übergibst: greeter.greet(greeter). Über self liest die Methode die Felder der jeweiligen Tabelle, für die sie aufgerufen wurde.

Die Tabelle zweimal zu schreiben, wirkt umständlich, und du kennst bereits Lua's Lösung: den Doppelpunkt. Die nächste Lektion verbindet die :-Syntax mit diesen typisierten Shapes.

challenge icon

Aufgabe

Einfach

Erstelle einen Typ-Alias namens Rectangle mit:

  • width vom Typ number
  • height vom Typ number
  • area: einer Methode (self: Rectangle) -> number, die width * height zurückgibt
  • perimeter: einer Methode (self: Rectangle) -> number, die 2 * (width + height) zurückgibt

Erstelle eine Variable rect vom Typ Rectangle mit der Breite 4, der Höhe 6 und implementiere beide Methoden (denke an den self-Parameter).

Gib Folgendes jeweils in einer eigenen Zeile aus (rufe die Methoden mit der Punkt-Syntax auf und übergib rect als self):

  1. die Fläche des Rechtecks
  2. den Umfang des Rechtecks
  3. die Breite des Rechtecks

Probier es selbst

-- Schreibe hier den Code
-- 1) definiere den Typ Rectangle mit zwei Zahlenfeldern und zwei Methoden
-- 2) erstelle rect (width 4, height 6), das beide Methoden implementiert
-- 3) gib area, perimeter und width 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

Übe selbstständig: Online-Lua-Compiler