メソッド内で proc を呼び出すと、proc の戻り値によって、proc を呼び出した out ブロック コンテキストからの戻りがトリガーされると思いました。私が呼び出すと、プロシージャからの戻り値があったため、実行されるべきではないtest(a_block)
ように感じます。puts "after the block"
さらに...test(a_block)
そしてtest(b_block)
まったく同じように動作します。ここに違いがあるはずだと思いましたか?
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)