我一直收到这个错误,我似乎无法修复它

I keep getting this error and i can't seem to fix it

我不断得到
in `eater': undefined method `hunger' for Human:Class (NoMethodError)

这是我写的代码:

   class Human
    attr_reader :name, :age, :hunger
    def initialize(name,age);
        @name = name
        @age = age
        @hunger = 50
    end 
    def eater() ;
        Human.hunger -= 10          
    end 
end

person = Human.new('Josh',32)
puts person.eater  

基本上我想将这个人的饥饿感减少 10,然后打印当前的饥饿感但不是打印它而是一直给我这个错误,我使用了 [=19 中的 OOP 概念=] 但即使这样似乎也行不通,我已经尝试了几乎所有方法并花了数小时试图得到这个有人可以帮助

我想这就是你想要做的:

class Human
  attr_reader :name, :age, :hunger

  def initialize(name, age, hunger = 50)
    @name = name
    @age = age
    @hunger = hunger
  end

  def eater
    @hunger -= 10
  end
end

person = Human.new('Josh', 32)
puts person.eater

除非您希望 @hunger 对于所有对象始终是 50 并且不变。

不要像 @hunger = 50 那样将默认值设置为对象的实例变量。相反,您希望该默认值位于参数中。

另外这个 Human.hunger -= 10 应该是 @hunger -= 10 因为我假设当你调用 #eater 对象时你希望它减少 10.

看来你没有使用 attr_reader :name, :age, :hunger 给你的任何方法,你最好去掉那一行,因为 attr_reader :name 只是一个快捷方式:

def name
  @name
end