Ich las die Quelle von Artifice durch und sah:
module Artifice
NET_HTTP = ::Net::HTTP
# ...
end
Zeile: https://github.com/wycats/artifice/blob/master/lib/artifice.rb#L6
Warum nicht einfach tun, Net::HTTP
anstatt ::Net::HTTP
, was bedeutet es, wenn Sie ::
als Präfix verwenden?
ruby
namespaces
ma11hew28
quelle
quelle
Antworten:
Dies
::
ist der Operator für die Bereichsauflösung. Es bestimmt, unter welchem Bereich sich ein Modul befindet. Beispielsweise:Für den Zugriff
Music::Record
von außerhalbMusic
würden Sie verwendenMusic::Record
.Zum Verweisen
Music::Record
vonMusic::EightTrack
Ihnen könnte einfach verwendet werden,Record
da es im selben Bereich (dem vonMusic
) definiert ist.Der Zugriff auf das
Record
Modul, das für die Schnittstelle mit Ihrer Datenbank verantwortlich istMusic::EightTrack
, kann jedoch nicht einfach verwendet werden,Record
da Ruby dies für erforderlich hältMusic::Record
. In diesem Fall würden Sie den Bereichsauflösungsoperator als Präfix verwenden und den globalen / Hauptbereich angeben :::Record
.quelle
Im speziellen Fall von Artifice wird in Zeile 41 der von Ihnen gezeigten Datei ein inneres
Net
Modul definiert . Um Zugang zum äußerenNet
Modul zu erhalten, wird es verwendet::Net
.quelle
Ein
::
Operator bezieht sich auf den globalen Bereich anstatt auf den lokalen.quelle