İsteğe Bağlı Özellikler
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 39 / 73.
Her alan her zaman mevcut değildir. Lua'da eksik bir tablo alanı yalnızca nil olarak okunur; bu esnektir, ancak attempt to concatenate a nil value gibi hataların ortaya çıkma şekli de budur.
Luau, bir şeklin bunu açıkça belirtmesine olanak tanır: bir alanı optional olarak işaretlemek için alanın türünün arkasına ? ekleyin:
type User = {
name: string, -- gerekli
email: string?, -- isteğe bağlı: string veya nil
}
local alice: User = {name = "Alice", email = "alice@luau.dev"}
local bob: User = {name = "Bob"} -- ✓ sorun yok, email isteğe bağlıBunu daha önce değişkenlerle gördünüz: string?, string | nil ifadesinin kısa yazımıdır. Aynı fikir artık bir şeklin tek tek alanları için de geçerlidir.
İsteğe bağlı bir alan nil olabileceğinden, onu kullanmadan önce kontrol etmelisiniz. Klasik Lua kalıbı işe yarar ve strict modda denetleyici, dalın içindeki türü daraltır:
if bob.email then
print(`email: {bob.email}`) -- burada email bir string
else
print("no email on file")
endİsteğe bağlı, "mevcut olmayabilir" anlamına gelir. "Herhangi bir tür" anlamına gelmez. email mevcutsa, yine de bir string olmalıdır.
Görev
KolayUser adlı bir tür takma adı oluşturun ve şunları ekleyin:
name,stringtüründe (gerekli)email,string?türünde (isteğe bağlı)
İki kullanıcı oluşturun:
alice: name"Alice", email"alice@luau.dev"bob: name"Bob", email yok
Bir User alan printContact işlevi oluşturun. Kullanıcının bir email adresi varsa [name] - [email] yazdırmalı; aksi takdirde [name] - no email yazdırmalıdır.
Ardından:
printContact(alice)çağrısını yapınprintContact(bob)çağrısını yapınbob.email == nilkarşılaştırmasının sonucunu yazdırın
Kendin dene
-- Kodu buraya yaz
-- 1) isteğe bağlı bir email alanına sahip User tipini tanımla
-- 2) alice (email ile) ve bob (olmadan) oluştur
-- 3) nil kontrolü ile printContact yaz
-- 4) her iki kullanıcı için çağır, sonra bob.email == nil 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'ler6Tablo Biçimlerini Tiplendirme
Satır İçi Biçim AçıklamalarıBiçimler İçin Tip Takma Adlarıİsteğe Bağlı ÖzelliklerBiçimler ve Serbest TablolarBiçimleri GenişletmeBiçimlere Metot EklemeSelf ve İki Nokta MetotlarıÖzet: Tablo Biçimlerini TanımlamaKendi başına pratik yap: Online Lua derleyicisi