标准ruby库中有一系列方法,即const_defined ?、 const_get或const_set。

const_defined?,const_get,const_set

而且,在Rails的Active Support Core扩展中,还存在这些个人的“ qualified_”对等物。

qualified_const_defined?,qualified_const_get,qualifeid_const_set

是否有人可以明确解释这些方法的裸格式和合格格式之间的区别?

先感谢您。

最佳答案

qualified_ const帮助器支持与任意深度的常量进行交互(不仅仅是对象的子级)。

我认为一个例子是解释这一点的最简单方法。假设Foo::Bar::Baz存在:

 > Object::const_get "Foo::Bar::Baz"
NameError: wrong constant name Foo::Bar::Baz
 > Object::const_get "Foo"
=> Foo
 > Foo.const_get "Bar"
=> Foo::Bar
 > Foo::Bar.const_get "Baz"
=> Foo::Bar::Baz


qualified_方法使您可以避免直接遍历模块层次结构:

 > Object::qualified_const_get "Foo::Bar::Baz"
=> Foo::Bar::Baz
 > Foo.qualified_const_set "Bar::Fizz", 123
=> 123
 > Foo::Bar::Fizz
=> 123


I'd recommend poking around the source, too。很干净

关于ruby-on-rails - const_get和合格的const_get有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16071168/

10-10 09:20