池田孝志です。

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