Varsayılan Parametre Değerleri
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 26 / 73.
İsteğe bağlı parametreler, ele almanız gereken bir nil değeri bırakır. Çoğu zaman asıl istediğiniz bir yedek değerdir: "çağıran belirtmediyse X'i varsay". Luau, imzada varsayılan söz dizimine sahip değildir (greeting: string = "Hello" diye bir şey yoktur); bunun yerine artık türlerle birlikte klasik Lua deyimini kullanırsınız:
function greet(name: string, greeting: string?): string
greeting = greeting or "Hello"
return `{greeting}, {name}`
end
print(greet("Alice")) -- Hello, Alice
print(greet("Alice", "Howdy")) -- Howdy, AliceParametre isteğe bağlı olarak açıklanmıştır (string?) ve gövdenin ilk satırı nil değerini varsayılan değerle değiştirir. Bu, nil yanlışsal olduğu için çalışır: nil or "Hello" ifadesi "Hello" olarak değerlendirilir. Bu satırdan sonra denetleyici, greeting değerinin artık nil olamayacağını bilir.
Lua'dan bildiğiniz bir uyarı: or, false değerini de değiştirir! Bir boolean? parametresi için flag = flag or true, açıkça belirtilen false değerinin sessizce üzerine yazardı. Bunun yerine açık bir nil denetimi kullanın:
function ship(weight: number, expedited: boolean?): number
if expedited == nil then
expedited = false
end
-- ...
endGörev
KolaycalculateTax adında, price: number (gerekli) ve varsayılan değeri 0.05 olan rate: number? alan bir fonksiyon oluşturun. Vergi tutarını (price * rate) bir number olarak döndürün.
formatGreeting adında, name: string (gerekli) ve varsayılan değeri "Hello" olan timeOfDay: string? alan bir fonksiyon oluşturun. "[timeOfDay], [name]!" ifadesini bir string olarak döndürün.
calculateShipping adında, weight: number, distance: number (ikisi de gerekli) ve varsayılan değeri false olan expedited: boolean? alan bir fonksiyon oluşturun: bu parametre için açık bir nil kontrolü kullanın! (weight * 0.5) + (distance * 0.1) hesaplayın ve expedited true ise sonucu 2 ile çarpın. Bir number döndürün.
Her birini kendi satırında çağırın ve yazdırın:
calculateTax(100)calculateTax(200, 0.08)formatGreeting("Alice")formatGreeting("Bob", "Good morning")calculateShipping(5, 100)calculateShipping(3, 50, true)
Kendin dene
-- Buraya kod yazın
-- calculateTax(price: number, rate: number?) -- varsayılan oran 0.05
-- formatGreeting(name: string, timeOfDay: string?) -- varsayılan "Hello"
-- calculateShipping(weight, distance, expedited: boolean?) -- varsayılan false
-- sonra altı 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'lerKendi başına pratik yap: Online Lua derleyicisi