İ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ı sadece nil olarak okunur — bu esnektir, ancak attempt to concatenate a nil value gibi hataların da sızma yoludur.
Luau bir şeklin bunu açıkça söylemesine izin verir: bir alanın türünden sonra bunu isteğe bağlı (optional) olarak işaretlemek için ? 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"} -- ✓ tamam, email isteğe bağlıBununla daha önce değişkenlerde karşılaşmıştınız: string?, string | nil ifadesinin kısaltmasıdır. Aynı fikir şimdi bir şeklin bireysel alanları için de geçerlidir.
İsteğe bağlı bir alan nil olabileceği için, kullanmadan önce kontrol etmelisiniz. Klasik Lua kalıbı çalışır ve katı modda (strict mode) 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ı, "bulunmayabilir" anlamına gelir — "herhangi bir tür" anlamına gelmez. Eğer email mevcutsa, yine de bir string olmak zorundadır.
Görev
KolayAşağıdaki özelliklere sahip User adında bir type alias oluşturun:
stringtüründename(required)string?türündeemail(optional)
İki kullanıcı oluşturun:
alice— name"Alice", email"alice@luau.dev"bob— name"Bob", email yok
Bir User alan printContact fonksiyonu oluşturun. Kullanıcının bir e-postası varsa [name] - [email] yazdırsın; aksi takdirde [name] - no email yazdırsın.
Ardından:
printContact(alice)fonksiyonunu çağırınprintContact(bob)fonksiyonunu çağırınbob.email == nilkarşılaştırmasının sonucunu yazdırın
Kendin dene
-- Buraya kod yazın
-- 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ımlama