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 verilirTek 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.
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:
movePlayer(playerDirection)updateGameState(currentState)selectedDifficultydeğ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
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
1Luau ile Başlarken
Luau Nedir?Neden Luau Kullanılmalı?İlk Luau KodunuzTip Denetimi ve Hata ModlarıÖzet: Luau'ya Giriş4Fonksiyonlarla Çalışmak
Parametreleri ve Geri Dönüş Değerlerini TiplendirmeAnonim Fonksiyonları TiplendirmeHiçbir Şey Döndürmeyen Fonksiyonlarİsteğe Bağlı ParametrelerVarsayılan Parametre DeğerleriDeğişken Sayıda Parametre Alan Fonksiyonlar (Variadic)Fonksiyon Tiplerini TanımlamaÖzet: Tiplendirilmiş Fonksiyonlar2Temel Tipler
Temel Tipler: num, str, bool'any' Tipi: Kaçış Yolu'unknown' TipiNil ve İsteğe Bağlı (Optional) TiplerUygulamada Tip ÇıkarımıAçık Tip BelirteçleriÖzet: Temel Tipler Pratiği5Diğer Adlar (Aliases), Birleşimler, Kesişimler
İlkel Tipler için Tip Diğer Adları (Type Aliases)Birleşim Tipleri (Union Types)Birleşim Tipleri ile ÇalışmakLiteral (Sabit) TiplerKesişim Tipleri (Intersection Types)Tip Diğer Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Tipli Tablolar: Diziler ve Map'ler
Tipli DizilerEleman Ekleme ve OkumaMap Tipi Nedir?Map Bildirimi ve Map'lere ErişimTablolar Üzerinde YinelemeKarma Biçimli TablolarÇok Boyutlu Tipli Dizilertable.unpack ve VarargsÖzet: Diziler ve Map'ler