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

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

Görev

Kolay

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

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