btw const_get和qualified_const_get有什么区别?

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

const_defined?, const_get, const_set

而且,在Rails的Active Support Core Extensions中,存在这些个体的“qualified_”对应物。

qualified_const_defined?, qualified_const_get, qualifeid_const_set

有没有人可以明确解释这些方法的裸形和合格forms之间的差异?

先感谢您。

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 

我也建议在源头周围寻找 。 它很干净。