我已经为桃树定义了一个类作为赋值的一部分。我想知道是否可以在我的一种方法中包含if语句,以使树在60年后死亡。这是我的代码:
class Tree
def initialize(color="green", fruit="peaches", age=0, peaches_amount=0)
@color = color
@fruit = fruit
@age = age
end
#age increases by one year every year
def the_age
@age += 1
return @age
end
#yield of peaches increases by 5 peaches every year
def peaches
@peaches_amount += 5
return @peaches_amount
end
def death
if age <60 return "I am dead"
else
end
end
end
答案 0 :(得分:0)
检查语法。不要将return "I am dead"
放在与条件相同的行上!
if @age > 60
"I am dead"
end
你也可以这样做:
"I am dead" if @ge > 60
此外,Ruby中不需要显式返回,至少在这种情况下是因为最后一次计算语句的结果是方法的返回值。
要知道的一件好事:您可以使用ruby -c my_script.rb
来检查是否存在语法错误。或者是一个好的IDE。
这是Ruby 101,所以我建议你阅读一些好书或者阅读一些教程,那里有很多。
答案 1 :(得分:0)
如果您尝试:
tree = Tree.new
tree.peaches
undefined method '+' for nil:NilClass
。@peaches_amount
。age
。在你的定义中,如果你年满60岁,你就死了。我认为你必须扭转你的支票。
如果您已经死亡,也可以登记peaches
。
参见我的例子:
class Tree
def initialize(color="green", fruit="peaches", age=0, peaches_amount=0)
@color = color
@fruit = fruit
@age = age
@peaches_amount = peaches_amount
@dead = false
end
#age increases by one year every year
def the_age
@age += 1
if @age == 60
@dead = true
puts "I died"
end
return @age
end
#yield of peaches increases by 5 peaches every year
def peaches
if @dead
return 0
else
return 5 * @age
end
end
def dead?
if @dead
return "I am dead"
else
return "I am living"
end
end
end
tree = Tree.new
puts "%i Peaches after %i years" % [ tree.peaches, tree.age ]
30.times{ tree.the_age }
puts "%i Peaches after %i years" % [ tree.peaches, tree.age ]
30.times{ tree.the_age }
puts "%i Peaches after %i years" % [ tree.peaches, tree.age ]
输出:
0 Peaches after 0 years
150 Peaches after 30 years
I died
0 Peaches after 60 years
为了给你一个真正的答案,你应该定义你想要实现的目标。