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 beliebige Zeichenketten, aber manchmal sind nur wenige exakte Werte sinnvoll. Ein Literaltyp 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 Typen mit nur einem Wert eher eine Kuriosität. In Kombination mit Vereinigungen werden sie zu einem der nützlichsten Werkzeuge von Luau: einer streng kontrollierten Menge zulässiger 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 erkannt; mit einer einfachen string würde er ungehindert durchgehen und erst zur Laufzeit einen Fehler verursachen – wenn du ihn überhaupt rechtzeitig bemerkst.

Literaltypen unterscheiden Groß- und Kleinschreibung und müssen exakt übereinstimmen: "North" entspricht nicht "north". String-Literale sind der häufigste Fall, aber boolesche und (in neueren Luau-Versionen) numerische Literale funktionieren auf dieselbe Weise. Dieses Muster, eine Vereinigung von String-Literalen, ersetzt in Luau außerdem die Enumerationen anderer Sprachen, wie du in einem späteren Kapitel sehen wirst.

challenge icon

Aufgabe

Einfach

Erstelle drei Literal-Union-Typ-Aliase:

  • 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, sowie eine Funktion updateGameState(state: GameState): string, die "Game state: [state]" zurückgibt.

Gib jeweils in einer eigenen Zeile aus:

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

Probier es selbst

-- Schreibe den Code hier
-- 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

Übe selbstständig: Online-Lua-Compiler