मैं क्लूजुर में होने वाले कीवर्ड को समझता हूं :keyword
। लेकिन इसका ::
उपयोग किस लिए किया जाता है? ऐसा क्यों लगता है कि यह एक बंधन है?
user=> :foo
:foo
user=> ::foo
:user/foo
मैं क्लूजुर में होने वाले कीवर्ड को समझता हूं :keyword
। लेकिन इसका ::
उपयोग किस लिए किया जाता है? ऐसा क्यों लगता है कि यह एक बंधन है?
user=> :foo
:foo
user=> ::foo
:user/foo
जवाबों:
आपके मौजूदा नाम स्थान के साथ कीवर्ड को पूरी तरह से योग्य बनाने के लिए डबल कोलन है । यह उन खोजशब्दों के लिए नाम के टकराव से बचने के लिए है जो विभिन्न पुस्तकालयों के लिए सार्थक हैं। पूरी तरह से योग्य कीवर्ड के बिना आप गलती से नक्शे में कुछ मूल्यों को अधिलेखित कर सकते हैं और लाइब्रेरी के साथ संगतता तोड़ सकते हैं।
As now documented for Clojure as well as for ClojureScript, ::
keywords can also be used to resolve namespace aliases. For example, ::foo/bar
will evaluate to :clojure.core/bar
if foo
is an alias of clojure.core
. Reader exception is thrown if foo
does not resolve to a namespace.
#:
and #::
syntax, which is used together with a map to resolve the keywords inside the map, as explained here.