From: "K.Kosako" Date: 2001-06-08T15:21:52+09:00 Subject: [ruby-dev:13500] Re: yield *[[]] Shugo Maedaさんの<87lmn336s3.wl@localhost.netlab.jp>から > 例: (1)が*[[1,2,3]]、(2)が*aの場合 > > $ ruby17 -e '*a = *[[1,2,3]]; p a' > [[1, 2, 3]] > $ ruby17 -e 'x = *[[1,2,3]]; *a = x; p a' > [1, 2, 3] > > というわけで、上記のような趣旨だとすると、仕様に問題があるのでは > ないでしょうか。 以下に引用した田中さんの解釈を、n = 1, *rが存在しない場合まで 含めて適用できると考えると、 x = *[[1,2,3]]; *a = x; の中の*a = xは、*a = [x]とみなすべき(現状はそうなっていない)なので、 上記のことで仕様に問題があるとは断定できないのでは。 Subject: Re: yield *[[]] (PR#53) From: Tanaka Akira Date: 06 Jun 2001 12:00:51 +0900 |左辺に , ないしは * が存在し、右辺の形に関わらず多重代入になる場合、現 |在、 | ... = a1, ..., an, *r |という式は | ... = [a1, ..., an, *r] |と等価です。この関係において、左辺が *a であり、a1, ..., an が存在せず、 |右辺が *r だけの場合、 | *a = *r |は | *a = [*r] |と等価になります。これは(私にとって)非常に自然な挙動であり、この関係を |あえて壊す理由はないと感じます。 -- 小迫@ソフネック 渋谷区恵比寿1-15-1