我正在使用Chris Pine的红宝石教程:https://pine.fm/LearnToProgram/?Chapter=09
任务是: 制作OrangeTree课程。它应该有一个返回高度的高度方法和一个oneYearPasses方法,当调用它时,它会使树老化一年。每年树长得更高(无论你认为橙树应该在一年内生长多少),经过一些年(再次,你的召唤),树应该死亡。在最初的几年里,它不应该生产水果,但过了一段时间它应该,而且我想,老树每年生产的比年轻树更多......无论你认为什么都是最有意义的。当然,你应该能够countTheOranges(它返回树上的橘子数)和pickAnOrange(它将@orangeCount减少一个并返回一个字符串,告诉你橘子有多美味,或者只是告诉它你今年没有更多的橘子可供选择了。确保你没有选择一年的橙子在明年之前脱落。
这是我的计划:
class OrangeTree
def initialize
@tree = "orange tree"
@age = 0
@height = 0
@fruit = 0
@fruitPicked = 0
puts "your " + @tree + " is budding"
end
def age
puts "your " + @tree + " is #{@age} years old."
@age = @age
oneYearPasses
end
def height
puts "your " + @tree + " is growing taller."
@height = @height
end
def fruit
puts "your " + @tree + " has #{@fruit} oranges."
@fruit = @fruit
end
def pickOrange
puts "pick how many oranges?"
@fruitPicked = @fruitPicked + gets.chomp.to_i
puts "you picked #{@fruitPicked} oranges."
end
def oneYearPasses
if @age >= 0
@age = @age + 1
end
if @height >= 0 and @height < 20
@height = @height + 1
else
puts "your " + @tree + " is no longer growing taller."
end
if @age >= 3
@fruit = @fruit + (@age * 2)
end
if @age >= 3
@fruitPicked = @fruitPicked + @fruitPicked
@fruit = @fruit - @fruitPicked
end
end
end
orange = OrangeTree.new
orange.age
orange.age
orange.age
orange.age
orange.age
orange.fruit
orange.pickOrange
orange.fruit
我的问题是为什么我的实例变量@fruit没有扣除@fruitPicked的数量? orange.fruit不断输出树木生长的橙子数量。感谢。
答案 0 :(得分:0)
因为在调用方法oneYearPasses时会扣除@fruit。 所以,如果你想在每次调用@fruitPicked时计算@fruit,也许你应该这样做。
def pickOrange
puts "pick how many oranges?"
@fruitPicked = @fruitPicked + gets.chomp.to_i
puts "you picked #{@fruitPicked} oranges."
@fruit = @fruit - @fruitPicked
end
输出将是:
orange = OrangeTree.new
你的橘子树正在萌芽
orange.age
你的橘子树已经0岁了。orange.age
你的橘子树已经1岁了。orange.age
你的橘子树已经2岁了。orange.age
你的橘子树已经3岁了。orange.age
你的橘子树已经4岁了。orange.fruit
你的橘子树有24个橘子。orange.pickOrange
选择了多少橘子? 4 你选了4个橘子。orange.fruit
你的橘子树有20个橘子。