From: Takaaki Tateishi Date: 2006-06-04T04:17:18+09:00 Subject: [ruby-dev:28685] Re: ブロックパラメータと多値について 整理しきれていませんが、 http://pub.cozmixng.org/~the-rwiki/?cmd=view;name=Ruby2.0BlockParameterAndMultipleValueAssignment に現状の理解を書き下してみました。 forは別問題として扱って良さそうな気はするのでひとまず抜かしています。 Takaaki Tateishi wrote: > Yukihiro Matsumoto wrote: >> 迷いがあるのは >> Proc.new{|x| x}.call(1,2) # => 1 >> にしようと思ってるのだけれども、そうすると > > これについてもう少し確認させてください。 > Procをブロックとは区別して特別扱いしないとして、call([1,2]) > とした場合も 1 でしょうか?(あるいは、まだ未定でしょうか?) > >> [[1,2],[2,3]].each{|x| p x} > > もし、call([1,2])で1となるなら、これも 1, 2 と表示されるのは > 分かるのですが、 逆に、proc{|a,&block| a}.call([0,1,2]) が > [0,1,2] になる理屈が分からないです。 > どのように考えれば良いでしょうか? > > あるいは、call([1,2])で[1,2]となるなら、これも[1,2],[2,3]が表示 > されて欲しい気がしますが、|x,|の動作と同じと考えると 1, 2 > の表示になるということですよね? -- Takaaki Tateishi