我知道使用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
这甚至合法吗?我犯了错误吗?
答案 0 :(得分:3)
@name
是一个实例变量,可以像类实例的私有成员一样访问。
self.name
是对self对象的方法调用,如果未明确定义,则会得到NoMethodError。
我会继续说明你班上的attr_accessor :weight
写作是:
def weight=(v)
@weight = v
end
def weight
@weight
end