Bir bloğa bir Proc aktarmanın mümkün olup olmadığını merak ediyorum. Basitçe çalışmıyor Proc.call
bir blok geçirmeden:Proc?
foo = Proc.new {
yield
}
foo.call {
puts "test"
}
Sonuçlar içinde: Aynı lambdas ile olur
LocalJumpError: no block given (yield)
. içinde
class Foo
def bar
yield
end
end
bar = Foo.new.method :bar
bar.call { puts "Success!" }
Sonuçlar: Ancak bu yöntem nesnelerle çalışır
bar.to_proc.call { puts "Success!" }
:
Success!
Garip olan şey ise hala proc haline yöntem nesne dönüştürme sonra çalışır olmasıdır
Sonuçlar:
Success!
Peki, bir bloktan yapılmış olan Proc nasıl blokları kabul etmiyor, ancak aslen bir yöntem olan Proc mu? Procs'u blokları kabul eden bloklardan oluşturmak mümkün mü?
olası bir kopyası [Proc içinde bir bloğu değerlendirebilir miyim?] (Http://stackoverflow.com/questions/17818160/can-i-evaluate-a-block-inside-a-proc) –
Hala açık Benim için ilgili soru: Verim sağlayan bloklardan elde edilen verim yöntemleri? –