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