Menu
Coddy logo textTech

Das Enum-Pattern in Luau

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

Programme sind voll von Werten aus einer kleinen, festen Menge: Eine Bestellung ist pending, shipped oder delivered; ein Spieler blickt nach up, down, left oder right. Viele Sprachen haben dafür ein enum-Schlüsselwort. Luau hat keines — und es braucht auch keines, da zwei Werkzeuge, die Sie bereits kennen, diese Aufgabe übernehmen.

Muster 1: Die Konstantentabelle. Eine einfache Tabelle ordnet aussagekräftige Namen Werten zu und ersetzt so "magische Zahlen", die im Code verstreut sind:

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

print(Status.Active) -- 2

Dies ist ein echten Laufzeitwert: Sie können Status.Active lesen, damit vergleichen und ihn übergeben — genau wie die Tabellen, die Sie bisher verwendet haben.

Muster 2: Die Literal-Union. Ein Typ, der aus exakten String-Werten besteht, unter Verwendung der Literal-Typen aus dem Kapitel über Unions:

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

Die Union existiert nur für den Typechecker — ohne jegliche Laufzeitkosten —, garantiert aber, dass eine Variable nichts außerhalb der definierten Menge enthalten kann. Die beiden Muster ergänzen sich: Die Tabelle liefert Ihnen Laufzeit-Werte unter einem Namen; die Union gibt Ihnen eine Garantie zur Kompilierzeit. Später in diesem Kapitel lernen Sie außerdem table.freeze kennen, was eine Konstantentabelle davor schützt, zur Laufzeit verändert zu werden.

Probier es selbst

Diese Lektion enthält keine Programmieraufgabe.

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