在Ruby类的初始化中,@name或self.name之间有什么区别



我知道使用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

这甚至合法吗?我犯了一个错误吗?

@name是一个实例变量,可以像类实例的私人成员一样访问。

self.name是对自我对象的方法调用,如果未明确定义,您将获得一个nomethoderror。

我将继续前进,解释您班上的attr_accessor :weight与:

相同
def weight=(v)
  @weight = v
end
def weight
  @weight
end

最新更新