Study
Lua

Closure di Lua

Penjelasan

Closure adalah fungsi yang tetap bisa mengakses variabel dari scope di luarnya, bahkan setelah fungsi luar itu selesai dieksekusi. Lua mendukung closure secara native — sering dipakai untuk membuat "pabrik fungsi" seperti counter yang mengingat nilai terakhirnya sendiri.

Contoh Konsep

function buatCounter()
  local hitungan = 0
  return function()
    hitungan = hitungan + 1   -- closure "mengingat" variabel hitungan
    return hitungan
  end
end

local counter1 = buatCounter()
print(counter1())   -- 1
print(counter1())   -- 2
print(counter1())   -- 3, hitungan terus bertambah, tidak reset

Praktikum

Buat fungsi buatPenjumlah(basis) yang mengembalikan fungsi closure — closure itu menerima satu angka dan mengembalikan basis + angka tersebut.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Setiap kali `buatCounter()` dipanggil, sebuah closure BARU dibuat dengan variabel `hitungan` sendiri yang terpisah — dua counter yang dibuat terpisah tidak akan saling memengaruhi satu sama lain.