私はメソッド内でprocを呼び出したときに、procの戻り値がprocを呼び出したアウトブロックコンテキストからの戻り値をトリガーすると考えました。私がtest(a_block)
と呼ぶとき、私はputs "after the block"
がprocから戻り値があるので実行されるべきではないと感じています。さらに... test(a_block)
とtest(b_block)
はまったく同じように動作します。私はここに違いがあると思った?さらに別のprocとラムダのディスカッション
a_block = Proc.new do
puts "in the Proc"
55
end
b_block = lambda do
puts "in the lambda"
66
end
def test(block)
puts "in test"
puts block.call
puts "after the block"
99
end
puts test(a_block)
puts test(b_block)
は、ブロック毎に「復帰」を入れて、あなたは違いが表示されます。 – megas
[Rubyのprocとlambdaの違いは何ですか?](http://stackoverflow.com/questions/1740046/whats-the-difference-between-a-proc-and-a-lambda-in -ruby) –