まつもと ゆきひろです.

In message "[ruby-list:2123] Re: bug? array in *array"
    on 97/02/13, sinara / blade.nagaokaut.ac.jp <sinara / blade.nagaokaut.ac.jp> writes:

|a = {"1"=>"2", "3"=>"4"}
|
|のとき、
|
|a.each { |x,y| print [x,y].join(","), "\n" }
|a.each { |*x|  print x.join(","), "\n" }
|a.each { |x|   print x.join(","), "\n" }
|
|は、同じ動作をしますね。3番めがちゃんと動くのが不思議。

イテレータ変数は代入の左辺値と同じ形式と動作です.
つまり,それぞれ

   x,y = [key, value]
   *y =  [key, value]
   x =   [key, value]

に対応します.

|それから、yield は *x というパラメータは取らないですね。

returnもそうですね.どうしたものかなあ.
# こちらは引数リストに合わせた方が良いような気がして来た.

|において、yield *x あるいは yield(*x) とするとそれぞれ
|違うエラーがでます。

「yield *x」では「(yield)*(x)」だと思っているんですね.

                                まつもと ゆきひろ /:|)