0

这是我的课:

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)?为什么我需要“自我”?

4

1 回答 1

0

正如我在上面的评论中已经写的:它终于对我有用,没有奇怪的语法和无法解释的错误——我能想出的唯一解释是我在测试过程中搞砸了一些东西。

于 2013-05-12T11:35:20.727 回答