From: "K.Kosako" Date: 2001-06-08T17:43:22+09:00 Subject: [ruby-dev:13504] Re: yield *[[]] Shugo Maedaさんの<87hexr316u.wl@localhost.netlab.jp>から > > 以下に引用した田中さんの解釈を、n = 1, *rが存在しない場合まで > > 含めて適用できると考えると、 > > > > x = *[[1,2,3]]; *a = x; > > > > の中の*a = xは、*a = [x]とみなすべき(現状はそうなっていない)なので、 > > 上記のことで仕様に問題があるとは断定できないのでは。 > > よくわからなかったのですが、「現状はそうなっていない」のは仕様の > 問題ではなくてバグだということですか? いえ、もちろんバグではありません。 多重代入の解釈の可能性として、あり得るかなという意味です。 > x = [1, 2] > a, b = x > p a #=> [1, 2] > p b #=> nil > > とならければいけないことになりますが…。 そうです。(実用的には不便かも) a, b = *x > 多重代入では、「右辺の式が一つしか与えられなかった場合、式を評価 > した値は配列に変換される」という仕様ですが、式を評価した値が配列 > であった場合はその配列がそのまま使われるというのが仕様だと思いま > す。(明文化されてはいないかもしれませんが。) > これを変えるとなるとちょっと互換性の問題が大きすぎませんか。 互換性の問題が大きいことには同意します。 -- 小迫@ソフネック 渋谷区恵比寿1-15-1