西@九大です。

規則的な要素の並びを持つ配列(例えば、n個おきに同じようなデータを持つ)
を扱おうとした時、どうもすっきりしたコードになりません。

  array = ['a1','b1','c1','a2','b2','c2',...]

悩んだ末、自分のスキル不足を棚に上げ、Array の仕様変更で解決してみたい
衝動にかられました。(あんた、そこらへんかなり外罰的やね)

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

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

のどちらかができると、嬉しいな、みたいな。どうでしょうか?
yield の実装を理解してないので、実現可能性については考えてないです>[1]。

 [3] Array#unflatten(num)
     array.unflatten!(3)
     a,b,c = array.shift

は、他に用途がなさそうなので、却下。(でも書く奴)

------------------------------------------------------------------
九州大学大学院システム情報科学研究科 情報工学専攻 博士後期課程三年
      西 和則   ( e-mail: kazunori / swlab.csce.kyushu-u.ac.jp )
------------------------------------------------------------------
#参考イメージ(↓)

array = [1,2,3,4,5]

array.each {|a,b| p [a,b]}
=> [1,2]
   [3,4]
   [5,nil]

array.each {|a,b,c| p [a,b,c]}
=> [1,2,3]
   [4,5,nil]

array.shift(2)
=>[1,2]

array.pop(3)
=>[5,4,3]