类方法中的Ruby常量

djb*_*ick 8 ruby

 class A
   class << self
     CONST = 1
   end
 end

 puts A::CONST    # this doesn't work
Run Code Online (Sandbox Code Playgroud)

有没有办法通过这个自我调用来从类外部访问常量?

它实际上是这样做的:

class A
    self.CONST = 1
end
Run Code Online (Sandbox Code Playgroud)

我知道我可以将常数移出这个自我调用以轻松解决这个问题.我对红宝石的内部运作更加好奇.

Dig*_*oss 4

不完全是你想要的,但你只是没有在类 A 中定义 CONST,而是在它的元类中定义,因此我保存了对它的引用......

class A
  class << self
    ::AA = self
    CONST = 1
  end
end
puts AA::CONST
Run Code Online (Sandbox Code Playgroud)