かんだです。

Re the message of ``[ruby-dev:8477] Re: [REQ] {enumerable, integer, range}.rand''...

Koretsugu Daigoro <tmmcross / hk.airnet.ne.jp>:
> これつぐです。
> 
> 私は「Array#rand/random/shuffle/randomize を組み込みにするか」
> にはあまり興味がない(強いて言えば反対)のですが……。

  あれば便利ですが、用途がちょっと特殊なきらいがありますね。
  僕はあってもいいかな、というところ。


> > まつもと ゆきひろです
> 
> > ここではまず新参もののshuffleは置いといて話をすると、
> > 
> >   (1) そのようなメソッドは必要か
> >   (2) 名前は
> >   (3) どのクラスのメソッドとするか
> > 
> > という3つの質問があります。(1)は割と根源的なので、あとで話を
> > します。(2)についてですが、randでは「乱数を返す」と思われそ
> > うなのでやめた方が良さそうです。ごとけんさんの案に従いrandom
> > の方が良さそうです。

> (かと言っていいのは思いつかない。random_pop とか……?)

  引数無しの get() はどうでしょう?


> > (3)ですが、randomeの定義
> > 
> >         array[rand(array.size)]
> > 
> > を見ても分かる通り、このメソッドはeachだけでは定義できません。
> > ですから、Enumerableに含まれる第1要件を満たしていません。ま
> > た、sortのように「内部的に配列に変換してsort」のような処理が
> > それなりに嬉しい局面も少なそうです。よってArrayに定義するこ
> > とを推します。
> 
> each で出来ないのはそのとおりなんですが、
> 結果的に Enumerable なクラスでは同じ程度には有用なので、
> どうせ Range や Array で定義するんだったら、
> Enumerable でやってしまったほうがいいという考え方もできませんか?

  Enumerable は実装上簡単ですが、気持ち悪いです。親クラスを is_a でなく
実装の共用に利用しちゃうっていうよろしくない手法じゃないでしょうか?
  僕としては Collection モジュールを作る、というのが嬉しいぞ。
# Collection って前に話出ましたっけ?


-- 
  だい@楓街           
    MAP2303 / mapletown.net                  紅玉軌道異変アリ。