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 işlenmesi gereken bir nil bırakır. Genellikle asıl istediğiniz bir varsayılan değerdir (fallback value) — "çağıran belirtmediyse X kabul et". Luau'da imzada (signature) varsayılan sözdizimi yoktur (greeting: string = "Hello" gibi bir kullanım bulunmaz); bunun yerine 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")) -- Merhaba, Alice
print(greet("Alice", "Howdy")) -- Selam, AliceParametre isteğe bağlı olarak ek açıklamalandırılmıştır (string?) ve gövdenin ilk satırı nil değerini varsayılan değerle değiştirir. Çalışma mantığı nil değerinin falsy olmasından kaynaklanı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 operatörü false değerini de değiştirir! Bir boolean? parametresi için flag = flag or true ifadesi, açıkça verilmiş bir false değerini sessizce geçersiz kılar. Bunun yerine açık bir nil denetimi (nil-check) kullanın:
function ship(weight: number, expedited: boolean?): number
if expedited == nil then
expedited = false
end
-- ...
endGörev
Kolayprice: number (gerekli) ve varsayılan değeri 0.05 olan rate: number? parametrelerini alan calculateTax adında bir function oluşturun. Vergi miktarını (price * rate) bir number olarak return edin.
name: string (gerekli) ve varsayılan değeri "Hello" olan timeOfDay: string? parametrelerini alan formatGreeting adında bir function oluşturun. "[timeOfDay], [name]!" değerini bir string olarak return edin.
weight: number, distance: number (ikisi de gerekli) ve varsayılan değeri false olan expedited: boolean? parametrelerini alan calculateShipping adında bir function oluşturun — bunun için açık (explicit) bir nil kontrolü (check) kullanın! (weight * 0.5) + (distance * 0.1) formülünü hesaplayın ve expedited true ise sonucu 2 ile çarpın. Bir number return edin.
Her biri kendi satırında olacak şekilde çağırın ve print edin:
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ı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'ler