まつもと ゆきひろです

In message "[ruby-dev:22247] Re: block to method by proc"
    on 03/12/12, nobu.nakada / nifty.ne.jp <nobu.nakada / nifty.ne.jp> writes:

|> いや、これとは違います。これは&blockで渡されたものはそのまま
|> 受け側のブロック引数に渡されそうな「気がする」のに、実際には
|> コピーが渡るという現象です。実装上の都合でProcはimmutable な
|> ので問題は発生しないはずでした。dRubyは想定外でしたねえ。
|
|同じオブジェクトにしてもいいんじゃないかと思います。今も、こう
|すると__id__も一致するんですけどね。

同じオブジェクトにするのが面倒で、いや、正確には面倒だと思い
こんでいたので、現状のようになっていたのですが、こんな小さな
パッチで実現できるなら取り込みたいです。副作用ってないんだろ
うか。

|--- eval.c	11 Dec 2003 21:06:14 -0000	1.602
|+++ eval.c	12 Dec 2003 10:51:02 -0000
|@@ -7038,4 +7038,5 @@ proc_alloc(klass, proc)
|     data->wrapper = ruby_wrapper;
|     data->iter = data->prev?Qtrue:Qfalse;
|+    data->block_obj = block;
|     frame_dup(&data->frame);
|     if (data->iter) {