Ruby on rails Ruby:如何访问匿名类中定义的常量?

Ruby on rails Ruby:如何访问匿名类中定义的常量?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我可以将常量AGE作为::AGE访问。如何访问常量NAME?(因为A::NAME抛出错误。) A类 年龄=24 类定义常数时使用: self::NAME = "foo" 这将显式地将它绑定到Ruby 1.9.x中的self,Ruby提供了singleton\u类的方法。所以电话 irb(main):009:0> A.singleton_class::NAME => "foo" 做你想做的事 在Ruby 1.8.x中,您可以自己实现方法singleton\u class: cla

我可以将常量
AGE
作为::AGE访问。如何访问常量
NAME
?(因为
A::NAME
抛出错误。)

A类
年龄=24

类定义常数时使用:

self::NAME = "foo"

这将显式地将它绑定到Ruby 1.9.x中的
self
,Ruby提供了
singleton\u类的方法。所以电话

irb(main):009:0> A.singleton_class::NAME
=> "foo"
做你想做的事


在Ruby 1.8.x中,您可以自己实现方法
singleton\u class

class Object
  def singleton_class
    class << self; self; end
  end
end

这是可能的,因为Ruby类随时都可以进行扩展和更改。

您想在哪里访问它?您应该添加“Ruby 1.9”。我已经添加了一个好的解决方案,它只适用于Ruby 1.9.x,并为Ruby 1.8.x添加了一个变通方法(这可能对您有帮助,也可能对您没有帮助).Rails框架支持Ruby 1.8.7中的
singleton_类
。我正在尝试访问第三方gem中定义的常量。这个答案对我很有帮助,因为我定义了匿名类来测试依赖于类常量的混合
class Object
  def singleton_class
    class << self; self; end
  end
end
A.singleton_class::NAME
=> "foo"