Harfi Birlik Enum'larını Kullanma
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 58 / 80.
Değer kümeleri, fonksiyon parametreleri olarak kullanıldıklarında çok işe yarar. Bir parametreyi değer kümesiyle tür belirterek tanımlayın; tür denetleyicisi, fonksiyonun yalnızca geçerli bir üyeyle çağrılmasını garanti eder:
type Direction = "up" | "down" | "left" | "right"
local function move(direction: Direction)
print(`Moving {direction}...`)
end
move("left") -- ✓
move("north") -- ✗ tür hatası: Direction değilFonksiyonun içinde, üyelerin tümünü eksiksiz biçimde bir if/elseif zinciriyle ele alın. Tür girdiyi dört değerle sınırladığından, üçünü kontrol edip sonuncuyu else ile ele almak tüm olasılıkları kapsar:
local function describe(direction: Direction): string
if direction == "up" then
return "Going upward"
elseif direction == "down" then
return "Going downward"
elseif direction == "left" then
return "Turning left"
else
return "Turning right"
end
endBir pürüz var: io.read() gibi dışarıdan gelen dizgeler, tür denetleyicisi kullanıcının ne yazacağını bilemediği için sıradan string türündedir. Luau'nun tür dönüştürme işleci :: bunu çözer: value :: Type, tür denetleyicisine değeri bu türde kabul etmesini söyler. Bu bölümün sonlarına doğru yer alan Tür İddiaları dersi, tür dönüştürmeleri ayrıntılı olarak ele alıyor; şimdilik tek bir satır yeterli:
local direction = io.read() :: DirectionTür dönüştürme bir kontrolden ziyade bir vaattir; çalışma zamanında girdiyi doğrulayan hiçbir şey yoktur. Üretim kodunda önce doğrulama yapılırdı; burada ise tür belirtilmiş fonksiyonların kullanıcı girdisini sorunsuzca kabul etmesini sağlar.
Görev
KolayOyuncunun yazdığı bir yönü eyleme dönüştür.
type Direction = "up" | "down" | "left" | "right"yaz.local function getAction(direction: Direction): stringyazarak"Climb","Drop","Turn left"veya"Turn right"döndür.local direction = io.read() :: Directionile oku vegetAction(direction)yazdır.
Run Code düğmesine bas: girdi up olduğunda çıktı olarak Climb görünür.
Kendin dene
-- 1) type Direction
-- 2) getAction(direction: Direction): string
-- 3) local direction = io.read() :: Direction, ardından eylemi yazdır
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ışma
Parametreleri ve Dönüş Değerlerini Tür BelirtmeAnonim Fonksiyonları Tür BelirtmeDeğer Döndürmeyen Fonksiyonlarİsteğe Bağlı ParametrelerVarsayılan Parametre DeğerleriBoolean Değerler için VarsayılanlarDeğişken Sayıda Parametre Alan FonksiyonlarFonksiyon Türlerini TanımlamaTekrar: Tür Belirtilmiş Fonksiyonlar2Temel Türler
Number, String ve Boolean'any' Türü: Kaçış Yolu'unknown' TürüNil ve İsteğe Bağlı TürlerTür Çıkarımı UygulamadaAçık Tür Ek AçıklamalarıTekrar: Temel Türler Alıştırması5Diğ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ı8Enum'lar: Luau Yöntemi
Luau'da Enum DeseniTablolar ile Sayısal Enum'larBirlik Olarak Metin Enum'larıHarfi Birlik Enum'larını KullanmaSabit Tabloları DondurmaÖzet: Enum'lar, Luau Yöntemi3Türlenmiş Tablolar: Diziler ve Map’ler
Türlenmiş DizilerÖğe Ekleme ve OkumaMap Türü Nedir?Map’leri Tanımlama ve ErişmeTablolar Üzerinde YinelemeKarma Şekilli TablolarBir Izgarayı OkumaBir Izgara Oluşturmatable.unpackÖzet: Diziler ve Map’lerKendi başına pratik yap: Online Luau derleyicisi