ブロックをProcに渡すことが可能かどうか疑問に思っています。単純に動作しませんProc.call
にブロックを渡す:ブロックをProcに渡すことはできますか?
foo = Proc.new {
yield
}
foo.call {
puts "test"
}
結果内:同じことがラムダで発生
LocalJumpError: no block given (yield)
。中
class Foo
def bar
yield
end
end
bar = Foo.new.method :bar
bar.call { puts "Success!" }
結果:ただし、このはメソッドオブジェクトで作業を行い
bar.to_proc.call { puts "Success!" }
:
Success!
奇妙なことは、それはまだprocのにメソッドオブジェクトを変換した後の作品ということです
結果:
Success!
ブロックから作られたProcはどのようにブロックを受け入れませんが、もともとは方法であったProcはどうしますか?ブロックを受け入れるブロックからProcsを作成することは可能ですか?
[Proc内のブロックを評価することはできますか?](http://stackoverflow.com/questions/17818160/can-i-evaluate-a-block-inside-a-proc) –
まだ開いています私にとって関連する質問:ブロックを生成する方法が得られるか? –