尝试创建递归计数器时的无限递归



我试图递归递增@counter CounterClass 的实例变量,但每次调用 #incrementer 方法时@counter都会再次设置为 0,从而导致无限递归。

我做错了什么?(我猜@counter变量永远不会更新)

class CounterClass
  attr_accessor :counter
  def initialize
    @counter = 0
  end
end
def incrementer(arg)
  cc ||= CounterClass.new
  cc.counter += 1
  p cc.counter
  incrementer(cc) unless cc.counter == 10
end
incrementer(CounterClass.new)

你可以做这样的事情:

class CounterClass
  attr_accessor :counter
  def initialize
    @counter = 0
  end
  def incrementer
    @counter += 1
    incrementer unless @counter == 10
  end
end
obj = CounterClass.new
obj.incrementer
p obj.counter #=> 10

最新更新