Fungsi Variadik
Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 29 dari 80.
Kamu sudah menggunakan ... (varargs) di Lua untuk menulis fungsi yang menerima argumen dalam jumlah berapa pun. Luau memungkinkanmu memberi tipe pada varargs, sehingga setiap argumen yang masuk diperiksa:
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 menyatakan bahwa setiap argumen tambahan harus berupa angka: sum(1, "two") akan menyebabkan error tipe. Alat saat runtime yang digunakan tetap sama:
{...}mengumpulkan varargs ke dalam array (di sini berupa{number})select("#", ...)menghitung jumlah argumen yang diterima...dapat langsung diteruskan ke fungsi lain, misalnyamath.max(...)
Seperti di Lua, ... harus menjadi parameter terakhir: parameter biasa yang bertipe ditulis terlebih dahulu, lalu bagian variadik mengumpulkan sisanya:
function joinWords(separator: string, ...: string): string
return table.concat({...}, separator)
end
print(joinWords("-", "a", "b", "c")) -- a-b-cTantangan
MudahTulis dua fungsi yang menerima berapa pun jumlah argumen.
- Tulis
local function sumAll(...: number): numberyang menjumlahkan{...}denganipairs. - Tulis
local function joinWords(separator: string, ...: string): stringyang mengembalikantable.concat({...}, separator). - Cetak
sumAll(5, 10, 15)danjoinWords("-", "apple", "banana", "cherry").
Tekan Jalankan: output menampilkan 30 dan apple-banana-cherry.
Coba sendiri
-- 1) sumAll(...: number): number
-- 2) joinWords(separator: string, ...: string): string
-- 3) cetak kedua hasilnya
Semua pelajaran di Pengantar Luau
1Memulai dengan Luau
Apa Itu Luau?Mengapa Menggunakan Luau?Kode Luau PertamamuPemeriksaan Tipe dan Mode ErrorRangkuman: Pengenalan Luau4Bekerja dengan Fungsi
Mengetik Parameter dan Nilai KembalianMengetik Fungsi AnonimFungsi Tanpa Nilai KembalianParameter OpsionalNilai Parameter DefaultNilai Default untuk BooleanFungsi VariadikMendefinisikan Tipe FungsiUlasan: Fungsi Bertipe2Tipe Inti
Number, String, dan BooleanTipe 'any': Jalan KeluarTipe 'unknown'Nil dan Tipe OpsionalInferensi Tipe dalam PraktikAnotasi Tipe EksplisitUlasan: Latihan Tipe Inti5Alias, Union, dan Intersection
Alias Tipe untuk Tipe PrimitifTipe UnionMenggunakan Tipe UnionTipe LiteralTipe IntersectionMenggabungkan Alias TipeRekap: Kombinasi Tipe Lanjutan3Tabel Bertipe: array & map
Array BertipeMenambahkan dan Membaca ElemenApa Itu Tipe Map?Mendeklarasikan dan Mengakses MapMenelusuri TabelTabel dengan Bentuk CampuranMembaca GridMembuat Gridtable.unpackRangkuman: array dan mapLatihan sendiri: Compiler Luau online