How do I get class-object from string “A::B::C” in Ruby?

后端 未结 1 1672
忘了有多久
忘了有多久 2021-02-08 16:44

The following example fails

class A
  class B
  end
end
p Object.const_get \'A\' # => A
p Object.const_get \'A::B\' # => NameError: wrong constant name A::         


        
1条回答
  •  我在风中等你
    2021-02-08 17:18

    You'll have to manually "parse" the colons yourself and call const_get on the parent module/class:

    ruby-1.9.1-p378 > class A
    ruby-1.9.1-p378 ?>  class B
    ruby-1.9.1-p378 ?>    end
    ruby-1.9.1-p378 ?>  end
     => nil 
    ruby-1.9.1-p378 > A.const_get 'B'
     => A::B 
    

    Someone has written a qualified_const_get that may be of interest.

    0 讨论(0)
提交回复
热议问题