:誰かが私のためにルビー定数ルックアップを説明できますか?具体的には
- は、あなたが直接OKスコープのconstに言及されている場合
::
(のような::Foo::Bar
) - とスコープの前に付ける必要がありますか? (ちょうど
Foo::Bar
) - この動作が非常に混乱している理由はありますか?
EDIT:それはdoesnのない限り、モジュール/クラスFoo
で、その後、Bar
はFoo::Bar
を参照する場合:私は、私の知る限り理解してきたように/それを経験して、この
module Foo
THING = 'thing'
module Bar
puts THING
end
end
#=> thing
module Foo::Bar
puts THING
end
#=> NameError: uninitialized constant Foo::Bar::THING
私が話している奇妙さについて少しはっきりしていました –
2番目の例では、Foo :: Bar名前空間だけが有効範囲に入ります。 OTOHでは、最初の例のように明示的に各名前空間を開くと、FooとFoo :: Barの両方がスコープに入れられます。 – Ian
それはかなり奇妙ですが、それを説明します。どちらの構文でもクラスにつながるすべてのモジュールを検索すると仮定しました。 2つの構文間の他の違いについて知っていますか? –