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是对 self 对象的方法调用,如果没有明确定义,您将得到 NoMethodError。

我将继续解释,attr_accessor :weight在您的课堂上写作与以下内容相同:

def weight=(v)
  @weight = v
end

def weight
  @weight
end
于 2012-11-04T12:46:27.963 回答