Study
Ruby

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

Editor Latihan

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.