İsteğe Bağlı Özellikler
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 41 / 80.
Her alan her zaman mevcut olmayabilir. Lua'da eksik bir tablo alanını okumak basitçe nil sonucunu verir; bu esneklik sağlar ama attempt to concatenate a nil value gibi hataların ortaya çıkmasına da yol açar.
Luau, bu durumu şeklin içinde açıkça belirtmene olanak tanır: bir alanın türünden sonra ? ekleyerek onu isteğe bağlı olarak işaretle:
type User = {
name: string, -- zorunlu
email: string?, -- isteğe bağlı: string veya nil
}
local alice: User = {name = "Alice", email = "alice@luau.dev"}
local bob: User = {name = "Bob"} -- ✓ uygun, email isteğe bağlıBunu daha önce değişkenlerle görmüştün: 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 etmelisin. Klasik Lua kalıbı işe yarar ve katı modda denetleyici, dalın içindeki türü daraltır:
if bob.email then
print(`email: {bob.email}`) -- burada email bir dizgedir
else
print("no email on file")
endİsteğe bağlı demek, "bulunmayabilir" demektir. "Herhangi bir tür olabilir" anlamına gelmez. email mevcutsa yine de bir metin olmalıdır.
Görev
KolayE-posta adresi eksik olabilecek kişilerin iletişim bilgilerini yazdırın.
type User = {name: string, email: string?}, ardındanlocal mia: User = {name = "Mia", email = "mia@coddy.tech"}velocal leo: User = {name = "Leo"}yazın.local function printContact(user: User)yazarak`{user.name}: {user.email}`ya da e-posta adresi yoksa`{user.name}: no email`yazdırın.- Önce
mia, ardındanleoiçin çağırın.
Run Code düğmesine basın: çıktı olarak Mia: mia@coddy.tech ve Leo: no email görünür.
Kendin dene
-- 1) İsteğe bağlı bir email alanı olan User türünü, ardından mia ve leo'yu tanımla
-- 2) email alanını kontrol eden printContact(user: User) fonksiyonunu tanımla
-- 3) Fonksiyonu önce mia, sonra leo için çağı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ı3Tü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’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 Luau derleyicisi