From: Takashi Ikeda Date: 1999-10-23T01:52:59+09:00 Subject: [ruby-list:17940] Enumerable#collect 池田孝志です。 Enumerable#collectにイテレータを与えなければ、eachで得た要素 の配列を返す、というのを考えてみました。 レシーバが配列じゃないときに使います。 class RandomNumbers include Enumerable def initialize(seed, number) @seed = seed @number = number end def each srand(@seed) for i in 1..@number yield(rand 0) end end def collect ary = [] if iterator? each {|elt| ary << yield(elt) } else each {|elt| ary << elt } end ary end end r = RandomNumbers.new(1,5) r.each {|e| print e, ' ' }; print "\n" p r.collect {|e| e } p r.collect -- 池田 孝志 cercine@kcn.ne.jp