Menu
CoddyTech

Fungsi Variadik (...)

Termasuk bagian Logika dan Alur dalam perjalanan Lua di Coddy. Pelajaran 11 dari 54.

Terkadang kamu membutuhkan fungsi yang dapat menerima jumlah argumen berapa pun. Mungkin kamu ingin menghitung jumlah dua angka, atau tiga, atau sepuluh, tanpa menulis fungsi terpisah untuk setiap kasus. Lua menyediakan sintaks khusus untuk ini: tiga titik ...

Ketika kamu menempatkan ... dalam daftar parameter fungsi, fungsi tersebut menjadi fungsi variadik yang menerima argumen sebanyak apa pun:

function sum(...)
    -- Isi fungsi
end

Di dalam fungsi, kamu bisa mengakses argumen ini dengan menggunakan ... lagi. Agar lebih mudah mengolahnya, kamu bisa mengemasnya ke dalam sebuah tabel menggunakan kurung kurawal:

function sum(...)
    local args = {...}
    local total = 0
    for i = 1, #args do
        total = total + args[i]
    end
    return total
end

print(sum(5, 10, 15))  -- output: 30
print(sum(1, 2, 3, 4, 5))  -- output: 15

Ekspresi {...} membuat tabel bergaya list yang berisi semua argumen yang diteruskan ke fungsi. Setelah itu, kamu bisa melakukan perulangan melalui tabel ini seperti tabel lainnya, menggunakan operator panjang # atau ipairs().

challenge icon

Tantangan

Mudah

Tulis fungsi calculateAverage yang menerima sejumlah argumen numerik dan mengembalikan rata-ratanya.

Gunakan sintaks variadik ... untuk menerima jumlah argumen yang fleksibel, memasukkannya ke dalam tabel, menghitung jumlahnya, lalu membaginya dengan banyaknya argumen.

Catatan: Kode awal (yang ditandai "Don't touch this code") membaca angka dari input, mengonversi setiap angka dari teks menjadi angka menggunakan tonumber(), lalu menyimpannya dalam tabel bernama numbers. Pada akhirnya, kode tersebut memanggil fungsimu menggunakan unpack(numbers), yang menyebarkan nilai-nilai tabel sebagai argumen individual, sehingga fungsimu menerimanya sebagai .... Kamu tidak perlu mengubah atau memahami kode ini secara terperinci, cukup fokus menulis calculateAverage.

Logika:

  • Masukkan semua argumen ke dalam tabel menggunakan {...}
  • Lakukan perulangan melalui tabel untuk menghitung jumlah semua angka
  • Bagi jumlahnya dengan banyaknya argumen untuk mendapatkan rata-rata
  • Kembalikan rata-rata sebagai angka

Parameter:

  • ... (angka): Jumlah argumen numerik yang bervariasi

Nilai yang dikembalikan: Rata-rata dari semua angka yang diberikan (angka)

Coba sendiri

-- Jangan ubah kode ini --
local numbers = {}
while true do
    local input = io.read()
    if input == nil or input == "" then
        break
    end
    local num = tonumber(input)
    if num then
        table.insert(numbers, num)
    end
end
-------------------------

function calculateAverage(...)
    -- Tulis kodemu di sini
end

local average = calculateAverage(unpack(numbers))
print("Average: " .. average)

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Lua online