0

我已经为桃树定义了一个类作为作业的一部分。我想知道是否可以在我的一种方法中包含一个 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
4

2 回答 2

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,所以我建议您阅读一些好书或遵循一些教程,那里有很多。

于 2013-10-23T20:32:37.370 回答
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

为了给你一个真正的答案,你应该定义你想要实现的东西。

于 2013-10-23T20:46:44.470 回答