我对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
答案 0 :(得分:0)
您无法直接访问其类外的对象的实例字段。使用getter方法。
将attr_writer :height
添加到您的课程中会给您。
然后你可以用
引用课外的高度while oranges.height <= 61