Menu
CoddyTech

String-Enums als Unions

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

Zahlen sorgen für kryptische Protokolle: Wenn du 2 siehst, sagt dir das wenig; wenn du "down" siehst, sagt es dir alles. Für gut lesbare Enums sind Luau-Literal-Union-Typen das richtige Werkzeug: ein Typ, dessen Mitglieder genau festgelegte Zeichenfolgen sind:

type Direction = "up" | "down" | "left" | "right"

local facing: Direction = "up"    -- ✓
local typo: Direction = "upp"     -- ✗ Typfehler beim Bearbeiten

Eine mit Direction annotierte Variable kann diese vier Zeichenfolgen und nichts anderes enthalten. Schreibst du eine davon falsch, erkennt die Prüfung das sofort: Der Fehler erreicht niemals einen Spieler.

Zur Laufzeit sind die Werte einfache Zeichenfolgen. Gib sie aus, verkette sie, vergleiche sie mit ==. Alles, was du über Zeichenfolgen weißt, gilt auch hier:

print(facing)            -- oben
print(`facing {facing}`) -- facing oben

Vergleiche die beiden Muster, die dir jetzt zur Verfügung stehen: Die konstante Tabelle erzeugt einen Laufzeitwert (UserRole), der Mitglieder enthält, während die Literal-Union überhaupt keinen Wert erzeugt. Es gibt keine Direction-Tabelle, sondern nur eine Regel, die die Prüfung dafür durchsetzt, welche Zeichenfolgen passen. Aussagekräftige, selbstdokumentierende Werte ohne Laufzeitkosten machen Literal-Unions zum bevorzugten Enum-Stil in Luau-Code.

challenge icon

Aufgabe

Einfach

Speichere eine Richtung, die nur einer von vier Namen entsprechen kann.

  1. Schreibe type Direction = "up" | "down" | "left" | "right".
  2. Deklariere local facing: Direction = "left".
  3. Gib facing aus, dann `The player moves {facing}`.

Klicke auf Run Code: Die Ausgabe zeigt left und The player moves left.

Probier es selbst

-- 1) Definiere Direction als Vereinigung von vier Strings
-- 2) local facing: Direction = "left"
-- 3) Gib facing aus, dann den Satz

Alle Lektionen in Einführung in Luau

Übe selbstständig: Online-Luau-Compiler