Menu
Coddy logo textTech

Literal (Sabit) Tipler

Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 33 / 73.

string gibi türler herhangi bir dizeye izin verir, ancak bazen yalnızca birkaç kesin değer anlamlıdır. literal türü, değerin kendisini tür olarak kullanır:

local mode: "dark" = "dark"   -- yalnızca "dark" dizesine izin verilir
local locked: true = true      -- yalnızca true boole değerine izin verilir

Tek başlarına tek değerli türler yalnızca bir meraktan ibarettir. Birleşimlerle birlikte Luau'nun en kullanışlı araçlarından birine dönüşürler: izin verilen değerlerden oluşan sıkı bir şekilde denetlenen küme:

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

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

Artık "nort" gibi bir yazım hatası veya "diagonal" gibi geçersiz bir değer, düzenleme sırasında yakalanır; düz bir string ile bunlar sorunsuzca geçer ve fark edecek kadar şanslıysanız çalışma zamanında bozulur.

Literal türleri büyük-küçük harfe duyarlıdır ve kesindir: "North", "north" ile eşleşmez. Dize literalleri en yaygın durumdur, ancak boolean ve (daha yeni Luau sürümlerinde) sayı literalleri de aynı şekilde çalışır. Dize literallerinin birleşimi olan bu kalıp, Luau'nun diğer dillerdeki enum'ların yerine nasıl geçtiğini de gösterir; bunu ilerideki bir bölümde göreceksiniz.

challenge icon

Görev

Kolay

Üç literal-birleşim tür takma adı oluştur:

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

Takma adları kullanarak tanımla:

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

movePlayer(direction: Direction): string adlı ve "Moving [direction]" döndüren bir işlev ile updateGameState(state: GameState): string adlı ve "Game state: [state]" döndüren bir işlev oluştur.

Her birini kendi satırında yazdır:

  1. movePlayer(playerDirection)
  2. updateGameState(currentState)
  3. selectedDifficulty değerini

Kendin dene

-- Buraya kod yazın
-- Direction / GameState / Difficulty türlerini literal union'lar olarak tanımla
-- playerDirection, currentState, selectedDifficulty değişkenlerini bildir
-- movePlayer(direction: Direction): string -> "Moving [direction]"
-- updateGameState(state: GameState): string -> "Game state: [state]"
-- üç sonucu yazdır
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Luau'ya Giriş bölümündeki tüm dersler

Kendi başına pratik yap: Online Lua derleyicisi