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 verilirTek 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.
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:
movePlayer(playerDirection)updateGameState(currentState)selectedDifficultydeğ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
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'lerKendi başına pratik yap: Online Lua derleyicisi