标准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/