Değişken Sayıda Parametre Alan Fonksiyonlar (Variadic)
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası — ders 27 / 73.
Herhangi sayıda bağımsız değişken kabul eden işlevler yazmak için Lua'nın ... (varargs) özelliğini kullandınız. Luau, varargs türünü belirtmenize (type) olanak tanır, böylece gelen her bağımsız değişken kontrol edilir:
function sum(...: number): number
local total = 0
for _, n in ipairs({...}) do
total = total + n
end
return total
end
print(sum(1, 2)) -- 3
print(sum(1, 2, 3, 4, 5)) -- 15...: number ifadesi, her ek bağımsız değişkenin bir sayı olması gerektiğini bildirir — sum(1, "two") bir tür hatasına dönüşür. Çalışma zamanı araçları bildiğiniz araçlardır:
{...}varargs değerlerini bir dizi içinde toplar (burada bir{number})select("#", ...)kaç bağımsız değişkenin geldiğini sayar...doğrudan başka bir işleve aktarılabilir, örn.math.max(...)
Lua'da olduğu gibi, ... son parametre olmalıdır — normal (türü belirtilmiş) parametreler önce gelir, variadic tail geri kalanını toplar:
function joinWords(separator: string, ...: string): string
return table.concat({...}, separator)
end
print(joinWords("-", "a", "b", "c")) -- a-b-cGörev
KolayHerhangi bir sayıda number türünde bağımsız değişken (...: number) alan ve bunların toplamını bir number olarak döndüren sumAll adında bir işlev oluşturun.
Herhangi bir sayıda string türünde bağımsız değişken alan ve kaç tane aktarıldığını bir number olarak döndüren countValues adında bir işlev oluşturun — select("#", ...) kullanın.
Gerekli bir separator: string ve ardından herhangi bir sayıda string türünde bağımsız değişken alan ve bunları ayırıcı ile birleştirilmiş olarak döndüren ({...} üzerinde table.concat kullanın) joinWords adında bir işlev oluşturun — dönüş türü string olmalıdır.
Her biri ayrı bir satırda olacak şekilde çağırın ve yazdırın:
sumAll(5, 10, 15)sumAll(1, 2, 3, 4, 5)countValues("a", "b", "c", "d")joinWords("-", "apple", "banana", "cherry")joinWords(" | ", "red", "green", "blue")
Kendin dene
-- Kodu buraya yazın
-- sumAll(...: number): number -- {...} üzerinde döngü
-- countValues(...: string): number -- select("#", ...)
-- joinWords(separator: string, ...: string): string
-- sonra beş 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'ler