如何在Ruby中跟踪类外部实例变量的更改?

时间:2011-07-20 21:32:22

标签: ruby-on-rails instance-variables

我对Ruby很新,我正在构建一个基本上作为交互式果园的程序,用户将在其中输入他们想要生长的树种类型,然后命令水,修剪,挑选和收获树。

我遇到的问题是当我尝试让程序请求命令,直到树在某个高度发生死亡时。高度是在类中的实例变量中定义的,我似乎无法弄清楚如何让程序跟踪该类外部的变量,以便它一直提示命令,直到达到某个值。

下面的代码是代码的开头和结尾,但不是中间部分似乎工作正常。底部的每个命令都工作一次,但程序结束。 任何帮助,将不胜感激。

class Orangetree

def initialize name
@name = name
@height = 0
@branches = 0
@winter = false
@orangesontree = 0
@orangesinbasket = 0
@timeOfyear = 0
puts @name + 'Just Sprouted! What would you like to do with him?'
end

puts 'Welcome to the Orchard! What would you like to grow today?'
reply = gets.chomp
while reply != 'oranges' 
puts 'I am sorry, we do not have that kind of tree, try again'
gets.chomp
end
oranges = Orangetree.new 'Woody '
while Orangetree |@height| <= 61
  command = gets.chomp
  if command == 'water'
   puts oranges.rain
  end  
  if command == 'pick'
  puts oranges.pick
  end
  if command == 'prune'
   puts oranges.prune
  end 
  if command == 'harvest'
   puts oranges.harvest
  end
end  

1 个答案:

答案 0 :(得分:0)

您无法直接访问其类外的对象的实例字段。使用getter方法。

attr_writer :height添加到您的课程中会给您。

然后你可以用

引用课外的高度
while oranges.height <= 61