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

challenge icon

Görev

Kolay

User adlı bir tür takma adı oluşturun ve şunları ekleyin:

  • name, string tü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:

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

Kendi başına pratik yap: Online Lua derleyicisi