Menu
Coddy logo textTech

İ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.

challenge icon

Görev

Kolay

Aşağıdaki özelliklere sahip User adında bir type alias oluşturun:

  • string türünde name (required)
  • string? türünde email (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:

  1. printContact(alice) fonksiyonunu çağırın
  2. printContact(bob) fonksiyonunu çağırın
  3. bob.email == nil karşı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
quiz iconKendini test et

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