#new中的ArgumentError,Subclassing Enumerator

时间:2013-04-15 13:53:00

标签: ruby enumerator

我像这样继承Enumerator

class CuadraticPrimeGenerator < Enumerator
  def initialize(a=1,b=49)
    super do |y|
      x = 1
      loop do 
        y << x**2 + a*x + b
        x += 1
      end
    end
  end
end

...然而

> CuadraticPrimeGenerator.new(1,49)
0027.rb:41:in `initialize': 49 is not a symbol (TypeError)
    from 0027.rb:41:in `initialize'
    from 0027.rb:48:in `new'
    from 0027.rb:48:in `<main>'

思想?

1 个答案:

答案 0 :(得分:3)

怎么样:

class CuadraticPrimeGenerator < Enumerator
  def initialize(a=1,b=49)
    super() do |y|
      count, x = 0, 1
      loop { y.yield(x**2 + a*x + b) }
    end
  end
end