为什么变量会随机变化?

时间:2015-09-12 00:58:07

标签: ruby-on-rails ruby class variables methods

class OrangeTree
  attr_accessor :one_year_passes, :age, :orange_count, :growth, :length

  def initialize
    @length = 0
    #@one_year_passes = one_year_passes
    @age = 0
    @orange_count = 0
    @growth = growth
  end

  def height
    if self.age <= 0
        self.length = 0
        growth
    else 
        growth
    end
  end

  def growth
    self.length += 12
    years
  end

  def years
    if self.length >= 12
        self.age = self.length / 12
        #num_oranges
    else
        self.age = 0
        height
    end
  end

我不知道我的问题是否有道理,但我正在制作一个增长的橙树类,它的成长会影响它的年龄,这最终会影响数字它有橙子。无论如何,我面临的问题是,当我在一个实例上调用高度方法时,它最终会通过增长方法,这会使它增长12个单位/英寸,但一旦进入年份方法和条件语句尝试长度从12到24没有我做任何事情。如果我在之前调用self.length,则会打印出条件12,但是如果我在打印条件24之后调用,这最终意味着self.age = 2而不是1.是否有人知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

我想您忘了在初始化方法中将@growth设置为0。目前,您在初始化期间调用方法growth一次,然后在实例上第二次调用height,从而接收age == 2