Menu
CoddyTech

Typy literałowe

Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 35 z 80.

Typy takie jak string dopuszczają dowolny ciąg znaków, ale czasami sens ma tylko kilka konkretnych wartości. Typ literałowy wykorzystuje samą wartość jako typ:

local mode: "dark" = "dark"   -- dozwolony jest tylko ciąg znaków "dark"
local locked: true = true      -- dozwolona jest tylko wartość logiczna true

Same w sobie typy o jednej wartości są jedynie ciekawostką. W połączeniu z uniami stają się jednym z najbardziej przydatnych narzędzi Luau: ściśle kontrolowanym zbiorem dozwolonych wartości:

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

local move: Direction = "north"     -- ✓
local state: GameState = "playing"  -- ✓
-- local bad: Direction = "diagonal" -- ✗ błąd typu!

Teraz literówka, taka jak "nort", lub nieprawidłowa wartość, taka jak "diagonal", zostanie wykryta podczas edycji. Przy zwykłym typie string kod przeszedłby bez problemu i spowodował błąd w czasie działania — jeśli dopisze ci szczęście i go zauważysz.

Typy literałowe rozróżniają wielkość liter i wymagają dokładnej zgodności: "North" nie pasuje do "north". Najczęściej używa się literałów tekstowych, ale literały logiczne oraz (w nowszych wersjach Luau) liczbowe działają tak samo. Ten wzorzec, czyli unia literałów tekstowych, jest też sposobem, w jaki Luau zastępuje typy wyliczeniowe z innych języków, o czym przekonasz się w późniejszym rozdziale.

challenge icon

Wyzwanie

Łatwy

Dozwolone są tylko cztery dokładne nazwy kierunków.

  1. Napisz type Direction = "north" | "south" | "east" | "west".
  2. Napisz local function movePlayer(direction: Direction): string, która zwraca `Moving {direction}`.
  3. Zadeklaruj local playerDirection: Direction = "east" i wyświetl movePlayer(playerDirection).

Naciśnij Run Code: wynik to Moving east.

Spróbuj swoich sił

-- 1) type Direction = "north" | "south" | "east" | "west"
-- 2) movePlayer(direction: Direction): string
-- 3) local playerDirection: Direction = "east", a następnie wypisz ruch

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online