From: "NAKAMURA, Hiroshi" Date: 2003-03-25T12:36:01+09:00 Subject: [ruby-dev:19897] Proc#call parameter assignment なひです。 とあるruby 1.8.0環境で、以下のような現象が生じています。 f = lambda { |block-arg| p block-arg #=> [[obj1, obj2]] ... } arg = [obj1, obj2] f.call(arg) debug.rbで捕まえながら見ていると、f.callの前と lambdaの中で、[]が一つ増えてしまう時があります。 # 具体的には、↑の...のところでbreakして、p argとp block-argを # したときに、[]の数が違う時がありました。 実際は↑のような簡単なコード片では発生しませんし、また、発生する環境でも、 このコードを通るところで必ず発生する *というわけではない* のですが、 起きるパターン(argとして与えるデータや呼び出し元)では、 100%発生します。RedHat/7.3でもcygwinでも、同じパターンで発生します。 どなたかこの情報だけで、なにかわかったりする人は居ませんでしょうか。^^; ちなみに実際のコードはこれです。 http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/app/rwiki/Attic/toc.rhtml?rev=1.1.2.3&content-type=text/x-cvsweb-markup&hideattic=0&only _with_tag=dev-rrr あるいは、「こういう間違いをし易いよ」などのアドバイスがあれば お願いします。例えば↑でobj1にto_aryが定義してあるとハマるとか、 block-argが外とスコープを共有してるとまずいとか。。。 念のため、以下に環境を書いておきますが、これを構築するのは至難の業と 思われます。もし必要でしたら環境を用意しますので言ってください。^^; ruby 1.8.0 (2003-03-24) csv/CVS HEAD webrick/CVS HEAD rwiki/CVS dev-rrr branch drb/2.0.2 rdtool/CVS HEAD # まだ何かあるような気がする。。。