Object为何能调用const_get方法?Module#const_get相关技术问询
聊聊Ruby中的Module#const_get方法
我之前在查别的问题答案的时候,发现Ruby里可以用Module#const_get这个实例方法在模块中查找类,先给你看个基础示例:
module M class C end end p M.const_get 'C' #=> M::C
当时我对这个方法的细节挺好奇的,特意用ri Module#const_get查询了它的文档,发现它还有个实用特性——如果传入带命名空间的类名,它会递归地查找对应的常量。比如下面这个例子:
module Foo; class Bar; end end Object.const_get 'Foo::Bar'
这里的Object.const_get属于顶层调用方式,因为Object是Ruby所有对象的根模块,所以用它可以在全局范围内查找带命名空间的常量。
内容的提问来源于stack exchange,提问作者mbigras
相关产品推荐
相关产品推荐

