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