0

self.name を使用するのが理にかなっていることはわかっていますが、次のコードで @name は何を意味するのでしょうか?

class NewGame < Game
  attr_accessor :name
  def initialize(name, options={})
    super
    self.name = name
  end

  def add_game(name)
     @name = name
  end
end

それは合法ですか?私は間違いを犯しましたか?

4

1 に答える 1

3

@nameクラスインスタンスのプライベートメンバーのようにアクセスできるインスタンス変数です。

self.name明示的に定義されていない場合は、NoMethodError が返されます。

私は先に進みattr_accessor :weight、あなたのクラスで書くことは以下と同じであることを説明します:

def weight=(v)
  @weight = v
end

def weight
  @weight
end
于 2012-11-04T12:46:27.963 に答える