我想知道是否有可能將一個塊傳遞給Proc。簡單地傳遞一個塊Proc.call
不起作用:我可以通過一個塊到Proc嗎?
foo = Proc.new {
yield
}
foo.call {
puts "test"
}
結果:
LocalJumpError: no block given (yield)
與lambda表達式同樣的情況。然而,這確實有方法的對象工作:在
class Foo
def bar
yield
end
end
bar = Foo.new.method :bar
bar.call { puts "Success!" }
結果:
Success!
奇怪的是,它仍然方法對象轉換爲一個進程後,工作:
bar.to_proc.call { puts "Success!" }
結果於:
Success!
那麼從一個塊創建的Proc如何不接受塊,但是最初是一種方法的Proc呢?是否有可能從接受塊的塊創建Procs?
可能重複[可以評估Proc中的塊嗎?](http://stackoverflow.com/questions/17818160/can-i-evaluate-a-block-inside-a-proc) –
仍然是開放的相關的問題對我來說:可以從產生塊的方法產生嗎? –