From: EGUCHI Osamu Date: 1999-10-23T22:07:33+09:00 Subject: [ruby-dev:8100] Re: [ruby-list:17940] Enumerable#collect えぐち@エスアンドイー です。 >>> In message [ruby-dev:8098] Re: [ruby-list:17940] Enumerable#collect On Sat, 23 Oct 1999 19:05:01 +0900, Takashi Ikeda said: cercine> 池田孝志です。 cercine> cercine> nobu.nakada@nifty.ne.jp writes: cercine> cercine> > なかだです。 cercine> > cercine> > At Sat, 23 Oct 1999 03:48:37 +0900, cercine> > Takashi Ikeda wrote: cercine> > > ソースに落せと言われても分かりません。フォローお願いしますm(__)m cercine> > cercine> > こんな感じでしょうか。 cercine> cercine> おお。素晴らしい…。 #う゛、先を越されちゃった。 なるほど、これだと、 return self.dup if self.is_a? Array に相当する部分が、がありませんが、 ここの dup の必要性は議論の余地がありますね。 ここに dup が要るのであれば、 Array#to_a にも dup が要る様な気がします。 あと、 array.c (rb_ary_dup) が static なので、実現しようとすると、 ちょっと遠回りになりますね。 cercine> > iterator? でないときは Enumerable#to_a と等価ということでよいの cercine> > ですよね? cercine> cercine> はい。しかしそんなものがあるとは思わなかった…(__; とすると、 cercine> 名前の問題なのでしょうか。 名前の問題でもあるのですが、 to_a に ブロックを渡すと言う発想は今までなかったわけで、 collect なのか to_a なのかとは別に、有用な機能だと思います。 さらに to_a の議論を発展させると、全てのクラスの to_a にブロックを渡し、 (今まで暗黙だった)配列化の実装をユーザの裁量に任せると言う事も、 状況によっては、有意義だと思います。 また、さらに拡大すると、to_i, to_f や to_s にブロックを渡すのも、、、 、、ここまでイテレータにするとやりすぎ? えぐち