我一直收到这个错误,我似乎无法修复它
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
我不断得到
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