From: matz@... (Yukihiro Matsumoto) Date: 2003-08-23T02:32:21+09:00 Subject: [ruby-dev:21228] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. まつもと ゆきひろです In message "[ruby-dev:21227] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values." on 03/08/23, nobu.nakada@nifty.ne.jp writes: |で、これでもmake testが通らなかったりするわけですが、そもそも |rb_yield_splat()の意図はどういうものでしょうか。 | |[ruby-dev:21214]を読みかえして思ったんですが、ひょっとして |"a".scan(/(.)/) {|x|p x} も "a".scan(/./) {|x|p x} 同様、"a"に |なるようにしようということでしょうか。 すいません。またやっちゃいました。基本的にはそういうことです。 正解はこれです。 Index: enum.c =================================================================== RCS file: /src/ruby/enum.c,v retrieving revision 1.38 diff -p -u -1 -r1.38 enum.c --- enum.c 22 Aug 2003 08:09:57 -0000 1.38 +++ enum.c 22 Aug 2003 17:31:07 -0000 @@ -501,3 +501,3 @@ each_with_index_i(val, memo) { - rb_yield_values(val, INT2FIX(memo->u3.cnt)); + rb_yield_values(2, val, INT2FIX(memo->u3.cnt)); memo->u3.cnt++; Index: eval.c =================================================================== RCS file: /src/ruby/eval.c,v retrieving revision 1.518 diff -p -u -1 -r1.518 eval.c --- eval.c 22 Aug 2003 08:13:36 -0000 1.518 +++ eval.c 22 Aug 2003 17:31:08 -0000 @@ -4256,2 +4256,3 @@ rb_yield_splat(values) { + values = svalue_to_avalue(values); if (RARRAY(values)->len == 0) {