3

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

これらのメソッドの裸のフォームと修飾されたフォームの違いを明示的に説明できる人はいますか?

前もって感謝します。

ひょう

4

2 に答える 2

3

const ヘルパーは、(サブジェクトの子だけでなく) 任意の深さでの定数とのqualified_対話をサポートします。

この例を説明するのが最も簡単な方法だと思います。存在するとしましょう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

ソースをいじることもお勧めします。それはかなりきれいです。

于 2013-04-17T22:27:59.203 に答える
0

あなたはこれが面白いと思うかもしれません:

http://redcorundum.blogspot.com/2006/05/kernelqualifiedconstget.html

于 2013-04-17T22:29:04.160 に答える