Menu
Coddy logo textTech

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, Alice

Parametre 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
    -- ...
end
challenge icon

Görev

Kolay

price: 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:

  1. calculateTax(100)
  2. calculateTax(200, 0.08)
  3. formatGreeting("Alice")
  4. formatGreeting("Bob", "Good morning")
  5. calculateShipping(5, 100)
  6. 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
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