这是我的课:
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
所以我添加了另一个“自我”:
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
该方法现在有效。为什么?为什么我不需要另一个“自我”作为第一个条件(如果 resource_current > 100)?为什么我需要“自我”?