Ich verstehe Schlüsselwörter in Clojure als :keyword
. Aber was ist die ::
verwendet? Warum sieht es so aus, als hätte es eine Bindung?
user=> :foo
:foo
user=> ::foo
:user/foo
Ich verstehe Schlüsselwörter in Clojure als :keyword
. Aber was ist die ::
verwendet? Warum sieht es so aus, als hätte es eine Bindung?
user=> :foo
:foo
user=> ::foo
:user/foo
Der doppelte Doppelpunkt ist da um Schlüsselwörter vollständig zu qualifizieren mit Ihrem aktuellen Namespace. Damit sollen Namenskonflikte bei Schlüsselwörtern vermieden werden, die für verschiedene Bibliotheken von Bedeutung sind. Ohne voll qualifizierte Schlüsselwörter könnten Sie versehentlich einige Werte in einer Map überschreiben und die Kompatibilität mit einer Bibliothek unterbrechen.
Wie jetzt dokumentiert für Clojure wie auch für ClojureScript , ::
Schlüsselwörter können auch verwendet werden, um Namespace-Aliase aufzulösen. Zum Beispiel, ::foo/bar
wird bewertet zu :clojure.core/bar
si foo
ist ein Alias von clojure.core
. Die Reader-Ausnahme wird ausgelöst, wenn foo
nicht in einen Namespace auflöst.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.