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 Ihrem Lua-OOP-Kapitel wissen Sie, dass Tabellen Funktionen genau wie jeden anderen Wert enthalten können. Shapes können diese Funktionsfelder ebenfalls beschreiben — und verwandeln so ein Shape in einen kleinen Vertrag aus Daten und Verhalten.

Ein Method-Feld verwendet die Syntax für Funktionstypen, die Sie im Kapitel über Funktionen kennengelernt haben. Sein erster Parameter wird konventionell self genannt — die Table, zu der die Method gehört — und das Shape kann sich sogar selbst referenzieren:

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

Um das Shape zu implementieren, speichern Sie eine Function in dem Feld und übergeben ihr diesen self-Parameter:

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

Es aufzurufen bedeutet, die Table selbst als self zu übergeben: greeter.greet(greeter). Über self liest die Method die Fields derjenigen Table aus, auf der sie aufgerufen wurde.

Die Table zweimal zu schreiben fühlt sich umständlich an — und Sie kennen bereits Luas 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 — eine Methode (self: Rectangle) -> number, die width * height zurückgibt
  • perimeter — eine Methode (self: Rectangle) -> number, die 2 * (width + height) zurückgibt

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

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

  1. die Fläche des Rechtecks (area)
  2. den Umfang des Rechtecks (perimeter)
  3. die Breite des Rechtecks (width)

Probier es selbst

-- Schreibe Code hier
-- 1) definiere Typ Rectangle mit zwei number-Feldern 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