我有兩個具有相同名稱的Const;一個是全局常量,另一個是在命名空間Admin下定義的。但我需要對它們進行區分;全球一個已定義,範圍的一個需要自動定義,如果它尚未定義:如何判斷是否在模塊命名空間中定義了一個常量,而不是全局的?
A = 'A Global Const'
module Admin
A = 'A Const within the Admin namespace' if const_defined? 'A' # always true and the Admin::A can never be defined!
end
puts A # => 'A Global Const'
puts Admin::A # => NameError: uninitialized constant Admin::A
# the Admin::A will never be defined.
但如果全球A定義,「const_defind?」部分將永遠返回真實!
我甚至曾嘗試:
... if defined? A
... if self.const_defined? 'A'
... if Object.const_get('Admin').const_defined? 'A'
永遠如此!
我需要區分它們,因爲我需要在A和Admin :: A中使用A兩種形式;
像公共使用的情況PostsController和管理員使用的Admin :: PostsController;
幫助!
正是我想要的。謝謝Lafortune! – Croplio 2010-08-03 17:13:52