私はArtificeのソースを読んでいて、次のことを見ました。
module Artifice
NET_HTTP = ::Net::HTTP
# ...
end
行:https://github.com/wycats/artifice/blob/master/lib/artifice.rb#L6
のNet::HTTP
代わりに::Net::HTTP
、つまり、::
プレフィックスとして使用する場合はどういう意味ですか?
私はArtificeのソースを読んでいて、次のことを見ました。
module Artifice
NET_HTTP = ::Net::HTTP
# ...
end
行:https://github.com/wycats/artifice/blob/master/lib/artifice.rb#L6
のNet::HTTP
代わりに::Net::HTTP
、つまり、::
プレフィックスとして使用する場合はどういう意味ですか?
回答:
::
スコープ解決演算子です。それが行うことは、モジュールがどのスコープの下にあるかを決定することです。例えば:
module Music
module Record
# perhaps a copy of Abbey Road by The Beatles?
end
module EightTrack
# like Gloria Gaynor, they will survive!
end
end
module Record
# for adding an item to the database
end
Music::Record
外部からアクセスするにはMusic
、を使用しますMusic::Record
。
から参照Music::Record
するには、同じスコープ(のスコープ)で定義されているため、Music::EightTrack
単純に使用できます。Record
Music
ただし、Record
データベースとのインターフェースを担当するモジュールにアクセスMusic::EightTrack
することはRecord
、Rubyが必要と考えているため、使用することはできませんMusic::Record
。その場合、スコープ解決演算子をプレフィックスとして使用し、グローバル/メインスコープを指定します::Record
。