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 metne izin verir — ancak bazen yalnızca birkaç kesin değer anlamlıdır. Bir literal type (sabit değer türü), değerin kendisini bir 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 bir değere sahip türler yalnızca bir ilgi odağıdır. Birleşimler (unions) ile birleştirildiklerinde ise Luau'nun en yararlı araçlarından biri haline gelirler — izin verilen değerlerin sıkı bir şekilde kontrol edildiği bir 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 yaparken yakalanır — düz bir string ile bu hata gözden kaçar ve fark edecek kadar şanslıysanız ancak çalışma zamanında (runtime) hataya yol açardı.

Literal type türleri büyük/küçük harfe duyarlıdır (case-sensitive) ve birebir eşleşmelidir: "North" ile "north" eşleşmez. Metin sabitleri (string literals) yaygın kullanımdır, ancak boolean ve (daha yeni Luau sürümlerinde) sayı sabitleri de aynı şekilde çalışır. String literal birleşimi olan bu kalıp, sonraki bir bölümde göreceğiniz üzere Luau'nun diğer dillerdeki enum yapılarının yerini alma şeklidir.

challenge icon

Görev

Kolay

Üç adet literal-union tip takma adı (type alias) oluşturun:

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

Bu takma adları kullanarak tanımlayın:

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

"Moving [direction]" değerini döndüren bir movePlayer(direction: Direction): string fonksiyonu ve "Game state: [state]" değerini döndüren bir updateGameState(state: GameState): string fonksiyonu oluşturun.

Her biri ayrı bir satırda olacak şekilde yazdırın:

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

Kendin dene

-- Kodu buraya yaz
-- Direction / GameState / Difficulty türlerini literal birleşimler 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