5
我有一个模块,其中包含类名为String
(其中包括)。我需要按名称查找类,并优雅地退后来,如果没有这样的类。是否有可能缩小红宝石不断查找
module Mod1
module String
end
end
Mod1.const_get 'String'
#⇒ Mod1::String
Kernel.const_get '::Mod1::String'
#⇒ Mod1::String
到目前为止,这么好。当我尝试查找不存在的类时,我预计会收到NameError
,这很好。问题是,如果没有与现有的全局命名空间给定名称一类,它被返回:
Mod1.const_get 'Fixnum'
#⇒ Fixnum < Integer
Kernel.const_get '::Mod1::Fixnum'
#⇒ Fixnum < Integer
我理解的原因,但我的问题是:有一个不折不扣的只能在给定名称空间中查找常量的方法?
现在我请与
result.to_s.start_with?(namespace)
的结果,但这绝对不是缩小查找奇的方式。
完美,谢谢。明显的建议“看看方法文档”照常工作。 – mudasobwa
我可能建议链接到文档而不是MRI源? http://ruby-doc.org/core-2.3.1/Module.html#method-i-const_get –