西@九大です。

From: matz / netlab.co.jp (Yukihiro Matsumoto)
> これですが、実は yield側からはブロックパラメータの数が分から
> ないので、現在の仕様のままでは少々手を入れるだけではこれは実
> 現できません。

やっぱりダメか。。。

>      loop do
>        a = array.shift
>        b = array.shift
>        c = array.shift
>        break if array.size == 0
>      end
> 
> で十分だったりする?

この例では十分なのですが、a,b,c,d,...,z な時が辛いです(無いと思うけど)。
また、その対象に特化したクラスを作り、その instance creation な場合を
考えると、やはり配列で返してくれるものがあると嬉しい気がしてます。

  data = XxxData.new(*array.shift(3))

みたいな。

From: WATANABE Hirofumi <eban / os.rim.or.jp>
> a, b, c = array[0, 3]
> array[0, 3] = nil

おー、なんと!まとめて nil を代入する事で、要素を削除できるんですねっ!
素晴しー。とりあえず、現状では(見た目の)最適解ぽいので、これでいかせて
もらいます。ありがとうございました。

で、Array#shift/pop(num) は、あると便利&あっても問題ないと思っている
のですが、どうでしょうか?

  data = XxxData.new(*array[0,3])
  array[0,3] = nil

でできる事はわかったのですが、他の人(含、未来の自分)がこういうコードを
見ると無駄に焦点がボケる気がするので、Array#first/at/last のような語彙
として欲しい気がしています。

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