Menu
Coddy logo textTech

Literale Typen

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

Typen wie string erlauben jeden String — aber manchmal machen nur wenige exakte Werte Sinn. Ein Literal Type verwendet den Wert selbst als Typ:

local mode: "dark" = "dark"   -- nur der String "dark" ist erlaubt
local locked: true = true      -- nur der Boolean true ist erlaubt

Für sich genommen sind Einzelwert-Typen eine Kuriosität. In Kombination mit Unions werden sie zu einem der nützlichsten Werkzeuge von Luau — einer strikt kontrollierten Menge erlaubter Werte:

type Direction = "north" | "south" | "east" | "west"
type GameState = "menu" | "playing" | "paused" | "gameover"

local move: Direction = "north"     -- ✓
local state: GameState = "playing"  -- ✓
-- local bad: Direction = "diagonal" -- ✗ Typfehler!

Jetzt wird ein Tippfehler wie "nort" oder ein ungültiger Wert wie "diagonal" bereits beim Bearbeiten abgefangen — mit einem einfachen string würde er durchgehen und erst zur Laufzeit einen Fehler verursachen, wenn man Glück hat, es überhaupt zu bemerken.

Literal Types sind Groß-/Kleinschreibung-sensitiv und exakt: "North" stimmt nicht mit "north" überein. String-Literale sind der häufigste Fall, aber Boolean- und (in neueren Luau-Versionen) Zahlen-Literale funktionieren auf dieselbe Weise. Dieses Muster — eine Union aus String-Literalen — ist auch die Art und Weise, wie Luau Enums anderer Sprachen ersetzt, wie Sie in einem späteren Kapitel sehen werden.

challenge icon

Aufgabe

Einfach

Erstelle drei Typ-Aliase für Literalgruppen (literal unions):

  • Direction = "north" | "south" | "east" | "west"
  • GameState = "menu" | "playing" | "paused" | "gameover"
  • Difficulty = "easy" | "medium" | "hard"

Deklariere unter Verwendung der Aliase:

  • playerDirection: Direction = "north"
  • currentState: GameState = "playing"
  • selectedDifficulty: Difficulty = "medium"

Erstelle eine Funktion movePlayer(direction: Direction): string, die "Moving [direction]" zurückgibt, und eine Funktion updateGameState(state: GameState): string, die "Game state: [state]" zurückgibt.

Gib jeweils in einer eigenen Zeile Folgendes aus:

  1. movePlayer(playerDirection)
  2. updateGameState(currentState)
  3. den Wert von selectedDifficulty

Probier es selbst

-- Schreibe hier den Code
-- type Direction / GameState / Difficulty als Literal-Unions
-- deklariere playerDirection, currentState, selectedDifficulty
-- movePlayer(direction: Direction): string -> "Moving [direction]"
-- updateGameState(state: GameState): string -> "Game state: [state]"
-- gib die drei Ergebnisse 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