İsteğe Bağlı Parametreler
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası — ders 25 / 73.
Düz Lua'da argümanları her zaman atlayabilirdiniz — eksik olanlar sessizce nil haline gelirdi ve bunu işlemeyi unutmak klasik bir hata kaynağıydı. Luau bu olasılığı açık hale getirir: bir parametreyi isteğe bağlı (optional) olarak işaretlemek için türüne ? ekleyin.
function greet(name: string, title: string?): string
if title then
return `{title} {name}`
end
return `Hello, {name}`
end
print(greet("Ada")) -- Merhaba, Ada
print(greet("Ada", "Dr.")) -- Dr. Adastring? ifadesi "string veya nil" olarak okunur. Çağıranlar bir metin geçebilir veya argümanı tamamen atlayabilir; ? olmayan parametreler zorunludur ve denetleyici bunları atlayan çağrıları işaretler.
Fonksiyonun içinde, isteğe bağlı bir parametre nil olabilir, bu nedenle using öncesinde kontrol edin — if title then ... end standart kalıptır. Kontrolü atlayıp nil değerini bir dizeye bağlarsanız, Lua'nın size her zaman verdiği aynı çalışma zamanı hatasını alırsınız; tür denetleyicisi sizi önceden uyarır.
Görev
Kolayusername: string (zorunlu) ve displayName: string? (isteğe bağlı) parametrelerini alan, geriye bir string döndüren createUserProfile adında bir fonksiyon oluşturun:
- Her ikisi de sağlandığında şunu döndürün:
"Profile: [displayName] (@[username])" - Yalnızca kullanıcı adı sağlandığında şunu döndürün:
"Profile: @[username]"
price: number (zorunlu) ve membershipLevel: string? (isteğe bağlı) parametrelerini alan, geriye bir number döndüren calculateDiscount adında bir fonksiyon oluşturun:
- Bir üyelik seviyesi sağlandığında, %10 indirimli fiyatı döndürün (
0.9ile çarpın) - Aksi takdirde fiyatı değiştirmeden döndürün
Aşağıdakileri çağırın ve her birini ayrı bir satırda yazdırın:
createUserProfile("john_doe", "John Doe")createUserProfile("jane_smith")calculateDiscount(100, "premium")calculateDiscount(75)
Kendin dene
-- Kodu buraya yaz
-- createUserProfile(username: string, displayName: string?): string
-- calculateDiscount(price: number, membershipLevel: string?): number
-- sonra dört sonucu 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'ler