ごとけんです

In message "[ruby-list:20936] Re: [Q] array.each{|i,j|..."
    on 00/02/22, junji999 / mud.biglobe.ne.jp <junji999 / mud.biglobe.ne.jp> writes:

>#ちなみに 'kou suu'=>項数?

ビンゴ。2項演算子とかいうあの項です。

>ちなみにarityはアンドキュメントなメソッドなんですよね?

ですね。多分メソッドのなかではめちゃめちゃ新しい部類に
入ると思います。

>どのクラスのメソッドになるんでしょうか?
>Proc? Method?(そんなクラスありましたっけ?)

Proc はマニュアルに載ってますが、Method は載ってませんね。最
近だと [ruby-list:20821] から始まるスレッドで出てきました。

>ブロック引数が複数個あるなら

ブロック引数の数が0個以上で固定なら、

>その複数個の配列をブロックに渡す.
>で、引数の個数分インクリメント。

ブロック引数の数が0個もしくは不定なら、each を実行、です。

さっき書き忘れましたけど、ブロックオペレータへの代入は = を
使った代入に概ね相当します。

たとえば
      a = [1,2,3]
      i     = a; p [i]      #=> [[1, 2, 3]]
      i,    = a; p [i]      #=> [1]        
      i,j   = a; p [i,j]    #=> [1, 2]     
      i,j,k = a; p [i,j,k]  #=> [1, 2, 3]  
      i,*j  = a; p [i,j]    #=> [1, [2, 3]]

ですので、これと同様に以下がなりたちます。
a = [1,2,3]
[a].each{|i|     p [i]}      #=> [[1, 2, 3]]
[a].each{|i,|    p [i]}      #=> [1]        
[a].each{|i,j|   p [i,j]}    #=> [1, 2]     
[a].each{|i,j,k| p [i,j,k]}  #=> [1, 2, 3]  
[a].each{|i,*j|  p [i,j]}    #=> [1, [2, 3]]

-- gotoken