有人可以解释为什么self.foo =在类之外工作<< self,而foo =在类中不起作用<<自
currentNode
的问题不同
要清楚,我不是在问何时使用自己。我在问为什么我不能在'class<<自我阻止,但我可以在它之外。
答案 0 :(得分:2)
你的第二个例子不是一个类变量,它是这个类的一个类实例变量,证明如果你这样继承你就会得到nil
class A
class << self
attr_accessor :foo
end
self.foo = 'foo'
end
class B < A
end
B.foo # => nil
因此,如果您想在class << self
中添加类变量,可以使用@@
class A
class << self
@@foo = :foo
def foo
@@foo
end
end
end