私は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単純に使用できます。RecordMusic
ただし、Recordデータベースとのインターフェースを担当するモジュールにアクセスMusic::EightTrackすることはRecord、Rubyが必要と考えているため、使用することはできませんMusic::Record。その場合、スコープ解決演算子をプレフィックスとして使用し、グローバル/メインスコープを指定します::Record。