From: matz@... (Yukihiro Matsumoto) Date: 1997-02-13T15:39:43+09:00 Subject: [ruby-list:2124] Re: bug? array in *array まつもと ゆきひろです. In message "[ruby-list:2123] Re: bug? array in *array" on 97/02/13, 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)」だと思っているんですね. まつもと ゆきひろ /:|)