可以在ruby中的方法中包含if语句吗?

时间:2013-10-23 20:21:51

标签: ruby-on-rails ruby class if-statement methods

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

2 个答案:

答案 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

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