我不断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,然后打印当前的饥饿感,但是与其打印它,它一直在给我这个错误,我还是使用了python的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