まつもと ゆきひろです

In message "[ruby-dev:8742] [REQ] Array#each{|a,b,...|}, Array#shift/pop(num)"
    on 99/12/28, Kazunori NISHI <kazunori / swlab.csce.kyushu-u.ac.jp> writes:

|規則的な要素の並びを持つ配列(例えば、n個おきに同じようなデータを持つ)
|を扱おうとした時、どうもすっきりしたコードになりません。
|
|  array = ['a1','b1','c1','a2','b2','c2',...]

ふうむ。

| [1] Array#each で、ブロック引数の個数分、要素を取れる。
|     array.each {|a,b,c| ...}

これですが、実は yield側からはブロックパラメータの数が分から
ないので、現在の仕様のままでは少々手を入れるだけではこれは実
現できません。

| [2] Array#shift(num=1) で、先頭から引数で指定した数だけ取りだせる。
|     while array.size > 0
|       a,b,c = array.shift(3)
|       ...
|     end

これって

     loop do
       a = array.shift
       b = array.shift
       c = array.shift
       break if array.size == 0
     end

で十分だったりする?

|のどちらかができると、嬉しいな、みたいな。どうでしょうか?
|yield の実装を理解してないので、実現可能性については考えてないです>[1]。
|
| [3] Array#unflatten(num)
|     array.unflatten!(3)
|     a,b,c = array.shift
|
|は、他に用途がなさそうなので、却下。(でも書く奴)

flattenと違ってunflattenは一意には決まりませんからねえ。

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