Menu
CoddyTech

Das Enum-Pattern in Luau

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

Programme stecken voller Werte aus einer kleinen, festen Menge: Ein Auftrag ist ausstehend, versandt oder zugestellt; ein Spieler blickt nach oben, nach unten, nach links oder nach rechts. Viele Sprachen haben dafür ein Schlüsselwort enum. Luau hat das nicht und braucht es auch nicht, denn zwei Werkzeuge, die du bereits kennst, erfüllen denselben Zweck.

Muster 1: die Konstantentabelle. Eine einfache Tabelle ordnet aussagekräftigen Namen Werte zu und ersetzt so „magische Zahlen“, die im Code verstreut sind:

local Status = {
    Pending = 1,
    Active = 2,
    Done = 3,
}

print(Status.Active) -- 2

Das ist ein echter Laufzeitwert: Du kannst Status.Active lesen, damit vergleichen und ihn weitergeben, genau wie mit den Tabellen, die du bisher verwendet hast.

Muster 2: die Literaleinheit. Ein Typ, der aus exakten Zeichenfolgenwerten besteht und die Literaltypen verwendet, die du im Kapitel über Vereinigungen kennengelernt hast:

type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow"    -- ✗ Typfehler

Die Vereinigung existiert nur für den Prüfer und verursacht keinerlei Laufzeitkosten, garantiert aber, dass eine Variable nur Werte aus dieser Menge enthalten kann. Die beiden Muster ergänzen sich: Die Tabelle stellt dir Laufzeit-werte unter einem Namen bereit; die Vereinigung gibt dir eine Garantie zur Kompilierzeit. Später in diesem Kapitel lernst du auch table.freeze kennen, das eine Konstantentabelle davor schützt, zur Laufzeit verändert zu werden.

challenge icon

Aufgabe

Einfach

Probiere beide Enum-Muster nebeneinander aus.

  1. Erstelle die konstante Tabelle local Speed = {Slow = 8, Fast = 24}.
  2. Schreibe type Pace = "slow" | "fast" und deklariere local pace: Pace = "fast".
  3. Gib Speed.Fast und dann pace aus.

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

Probier es selbst

-- 1) eine konstante Tabelle Speed mit Slow = 8, Fast = 24
-- 2) Typ Pace = "slow" | "fast", dann lokale Variable pace: Pace = "fast"
-- 3) Speed.Fast ausgeben, dann pace

Alle Lektionen in Einführung in Luau

Übe selbstständig: Online-Luau-Compiler