我可以访问常量AGE
作为A :: AGE。如何访问常量NAME
?(因为A::NAME
会抛出错误。)
class A
AGE=24
class << self
NAME="foo"
end
end
注意:我正在尝试访问A类之外的常量。
注2:我使用的是Ruby 1.8.7
答案 0 :(得分:9)
在Ruby 1.9.x中,Ruby提供了方法singleton_class
。所以电话
irb(main):009:0> A.singleton_class::NAME
=> "foo"
做你想做的事。
在Ruby 1.8.x中,您可以自己实现方法singleton_class
:
class Object
def singleton_class
class << self; self; end
end
end
然后你可以打电话:
A.singleton_class::NAME
=> "foo"
这是可能的,因为Ruby类总是可以进行扩展和更改。
答案 1 :(得分:1)
使用:
定义常量self::NAME = "foo"
这将明确地将其绑定到self
。