İsteğe Bağlı Parametreler
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 25 / 73.
Saf Lua'da bağımsız değişkenleri her zaman atlayabilirdiniz: eksik olanlar sessizce nil olurdu ve bunu ele almayı unutmak, hataların klasik bir kaynağıydı. Luau bu olasılığı açık hâle getirir: bir parametrenin türüne ? ekleyerek onu isteğe bağlı olarak işaretleyin.
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?, "string veya nil" olarak okunur. Çağıranlar bir dize gönderebilir veya bağımsız değişkeni tamamen atlayabilir; ? olmayan parametreler gereklidir ve denetleyici, bunları atlayan çağrıları işaretler.
Fonksiyonun içinde isteğe bağlı bir parametre nil olabilir; bu yüzden onu kullanmadan önce kontrol edin: if title then ... end standart kalıptır. Kontrolü atlayıp nil değerini bir dizeyle birleştirirseniz Lua'nın her zaman verdiği çalışma zamanı hatasının aynısını alırsınız; tür denetleyici sizi önce uyarır.
Görev
Kolayusername: string (zorunlu) ve displayName: string? (isteğe bağlı) alan ve string döndüren createUserProfile adlı bir işlev 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ı) alan ve number döndüren calculateDiscount adlı bir işlev oluşturun:
- Bir üyelik seviyesi sağlandığında, fiyatı %10 azaltılmış olarak döndürün (
0.9ile çarpın) - Aksi takdirde fiyatı değiştirmeden döndürün
Her birini kendi satırında çağırıp yazdırın:
createUserProfile("john_doe", "John Doe")createUserProfile("jane_smith")calculateDiscount(100, "premium")calculateDiscount(75)
Kendin dene
-- Buraya kod yazın
-- createUserProfile(username: string, displayName: string?): string
-- calculateDiscount(price: number, membershipLevel: string?): number
-- sonra dört sonucu yazdırın
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'lerKendi başına pratik yap: Online Lua derleyicisi