From: Yukihiro Matsumoto Date: 2009-07-15T07:19:50+09:00 Subject: [ruby-dev:38788] Re: 多重代入やメソッド引数の展開でto_aが呼ばれます まつもと ゆきひろです In message "Re: [ruby-dev:38785] Re: 多重代入やメソッド引数の展開でto_aが呼ばれます" on Tue, 14 Jul 2009 17:18:38 +0900, Shugo Maeda writes: |2009/02/26 21:07 に nagachika さんは書きました: |> 多重代入の右辺やメソッド呼び出しの引数で * を付けて展開する時に |> 呼ばれるメソッドは 1.8.7だと to_ary なのですが、 |> 1.9(trunk)だと to_a が呼ばれるようになっているようです。 | |1.8.7でもto_aryがなければto_aが呼ばれるので、to_aの前にto_aryを呼ぶ処理が |なくなったようですね。 | |> この変更は意図的なものでしょうか? | |どうでしょうか? > まつもとさん |to_aryが定義されているクラスでは、きっとto_aも定義されていると思うので、実用上 |はあまり問題ないような気もしますが。 | |逆に*x = yのように左辺に*が現れるケースでは、1.9からto_aryが呼ばれるように |なっているので、何となくちぐはぐな感じがします。 なぜそのような変更したのか、ぜんぜん覚えていないんですが(一時 的に to_splat を呼んでたのは覚えてる)、改めて考えてみるとどち らも to_ary だけが呼ばれるべきのような気がしています。