这是我的班级:
class Combatant < ActiveRecord::Base
attr_accessible :resource_current
def change_resource(amount)
resource_current += amount
if resource_current < 0
resource_current = 0
elsif resource_current > 100
resource_current = 100
end
end
end
在Combatant类的对象上执行change_resource时,我得到:
undefined method `+' for nil:NilClass
当然,resource_current已初始化,其值为6.
当我将方法更改为:
时 def change_resource(amount)
self.resource_current += amount
if resource_current > 100
resource_current = 100
elsif resource_current < 0
resource_current = 0
end
end
它是:
undefined method `<' for nil:NilClass
所以我添加另一个'self':
def change_resource(amount)
self.resource_current += amount
if resource_current > 100
resource_current = 100
elsif self.resource_current < 0
resource_current = 0
end
end
该方法现在正在运行。 为什么?为什么我不需要另一个'self'作为第一个条件(如果resource_current> 100)? 为什么我需要“自我”?
答案 0 :(得分:0)
正如我在上面的评论中所写: 它最终对我有用,没有奇怪的语法和无法解释的错误 - 我能想到的唯一解释是我在测试过程中弄乱了一些东西。