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 に答える