标准的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
有没有人可以明确解释这些方法的裸形和合格形式之间的差异?
提前谢谢。
嗨答案 0 :(得分:3)
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
答案 1 :(得分:0)