Ruby 1.9.1'i gömülü bir betik dili için kullanmaya çalışıyorum, böylece "son kullanıcı" kodu bir Ruby bloğuna yazılır. Bununla ilgili bir sorun, kullanıcıların bloklarda 'return' anahtar kelimesini kullanabilmelerini istememdir, böylece örtük dönüş değerleri konusunda endişelenmelerine gerek kalmaz. Bunu aklımızda tutarak, yapmak istediğim şey bu:
def thing(*args, &block)
value = block.call
puts "value=#{value}"
end
thing {
return 6 * 7
}
Yukarıdaki örnekte 'return' kullanırsam, bir LocalJumpError alıyorum. Bunun söz konusu bloğun lambda değil Proc olması nedeniyle olduğunun farkındayım. 'Return' i kaldırırsam kod çalışır, ancak bu senaryoda gerçekten 'return' kullanabilmeyi tercih ederim. Mümkün mü? Bloğu bir lambda'ya dönüştürmeyi denedim, ancak sonuç aynı.