得到错误ruby - 未定义的方法`+'代表nil:我的代码中的NilClass

时间:2014-09-18 14:29:04

标签: ruby-on-rails ruby string oop

我是红宝石并且练习OOP的新手。当我尝试创建一个JellyBean类的实例(' j'在我的代码中)时,我收到的错误如下所示。
我想将j的name属性设置为" vanilla jelly bean" - > (即@flavour +'果冻豆') 任何人都可以告诉我的错误吗?

class Dessert
  attr_accessor :name
  attr_accessor :calories
  def initialize(name, calories)
    @name = name
    @calories = calories
  end
  def healthy?
    @calories < 200
  end
  def delicious?
    true
  end
end

class JellyBean < Dessert
  attr_accessor :flavour
  def initialize(flavor)
    @calories = 5
    @flavour = flavour
    @name = @flavour + ' jelly bean'
  end
  def delicious?
    @flavour != 'licorice'
  end
end

j = JellyBean.new('vanilla')

我收到以下错误

(eval):304: undefined method `+' for nil:NilClass (NoMethodError)
    from (eval):311:in `new'
    from (eval):311

2 个答案:

答案 0 :(得分:3)

因为你的初始化方法中有一个拼写错误:

def initialize(flavor)
  @calories = 5
  @flavour = flavour
  @name = @flavour + ' jelly bean'
end

flavour被声明为属性但从未设置,所以总是为零。这意味着@flavour将始终设置为nil。

应该是:

def initialize(flavour)
  @calories = 5
  @flavour = flavour
  @name = @flavour + ' jelly bean'
end

答案 1 :(得分:0)

如果我运行你的代码并在底部进行检查,那就可以了:

#<JellyBean:0x00000001920f58 @calories=5, @flavour="vanilla", @name="vanilla jelly bean">

这是我添加的行:

puts j.inspect·