From: Shugo Maeda Date: 2009-07-15T22:28:54+09:00 Subject: [ruby-dev:38797] Re: 多重代入やメソッド引数の展開でto_aが呼ばれます 前田です。 2009/07/15 20:31 に Tanaka Akira さんは書きました: >> 1.9では、他にも*x = [1]とかx = *[1]とかの挙動が1.6の時に戻っているようですが、 >> このあたりのまとまった議論ってありましたっけ。 > >> ブロックパラメータと多重代入が明確に分離されたことで、多重代入の方は >> [ruby-dev:13493]の時のまつもとさんの拘りがなくなって、田中さんの主張 >> に沿った修正がされたのかなと推測しているのですが。 > > 以下のような文章を書いたことがあります。 ありがとうございます。 > | [ruby-dev:29616] を実装したとき、最初は上のように括弧で括ればいいと考えて、 > | 配列の展開は行わなかった。しかし、テストを通すために必要なところに括弧を挿 > | 入していったところ、最終的に rss でめげたのである。多すぎてあきらめたのであ > | る。めげてしまい、また、配列の展開は使い勝手がいいということを認めざるを得 > | なかったため、配列の展開は行うことにした。 [ruby-dev:29616]のスレッドは見覚えがあるのですが、配列の展開はrssのためだった んですねえ。Hash#eachなどの互換性のためかと思っていました。 多重代入の変更は、このブロックパラメータの変更の結果、メソッドの引数の挙動に 合わせる必要がなくなったため、よりわかりやすい挙動(結局1.6と同じ?)に変更され たという理解で合っていますか? -- Shugo Maeda