使用类中的attr_accessor的类变量<<自

时间:2015-07-16 02:02:24

标签: ruby class-variables attr-accessor

有人可以解释为什么self.foo =在类之外工作<< self,而foo =在类中不起作用<<自

currentNode

这与When to use 'self' in Ruby

的问题不同

要清楚,我不是在问何时使用自己。我在问为什么我不能在'class<<自我阻止,但我可以在它之外。

1 个答案:

答案 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