Block, Proc & Lambda di Ruby
Penjelasan
Block adalah potongan kode yang bisa dilewatkan ke sebuah method, ditulis dengan do...end (untuk block banyak baris) atau { ... } (untuk block satu baris) — fitur paling khas Ruby, dipakai di mana-mana (each, map, times, dst). Di dalam method sendiri, block yang dilewatkan bisa dijalankan lewat keyword yield. Proc dan lambda adalah cara menyimpan block jadi object yang bisa disimpan ke variabel dan dipakai ulang.
Contoh Konsep
def ulangi_tiga_kali
yield 1
yield 2
yield 3
end
ulangi_tiga_kali { |i| puts "Percobaan ke-#{i}" }
# Lambda, block yang disimpan ke variabel
kalikan_dua = ->(angka) { angka * 2 }
puts kalikan_dua.call(5) # 10
Praktikum
Buat method ulangi(n) yang memanggil yield sebanyak n kali dengan index-nya (mulai dari 1). Panggil ulangi(3) dengan block yang mencetak "Baris ke-{index}".
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Kalau method-mu mungkin dipanggil TANPA block, cek dulu dengan block_given? sebelum memanggil yield — memanggil yield tanpa ada block yang dilewatkan akan menghasilkan error LocalJumpError.