我可以訪問常量AGE
A :: AGE。如何訪問不斷NAME
Ruby:如何訪問匿名類中定義的常量?
class A
AGE=24
class << self
NAME="foo"
end
end
注意事項?(如A::NAME
拋出一個錯誤。):我試圖訪問類A.
注2外的常數:我關於Ruby 1.8.7
我可以訪問常量AGE
A :: AGE。如何訪問不斷NAME
Ruby:如何訪問匿名類中定義的常量?
class A
AGE=24
class << self
NAME="foo"
end
end
注意事項?(如A::NAME
拋出一個錯誤。):我試圖訪問類A.
注2外的常數:我關於Ruby 1.8.7
在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類始終可用於擴展和更改。
你應該添加「Ruby 1.9」。 –
+1。我在Ruby 1.8.7上 –
我已經補充說好的解決方案只適用於Ruby 1.9.x,並向Ruby 1.8.x添加了一個解決方法(這可能會幫助你,也可能不會幫助你)。 – mliebelt
定義常量:
self::NAME = "foo"
這將明確地將其綁定到self
。
我正在嘗試訪問第三方gem中定義的常量。所以我沒有控制它。 –
你想在哪裏訪問它? – Eimantas
我已更新我的問題 –