91 Stimmen

Was ist die :: für in Clojure verwendet?

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

93voto

skuro Punkte 13264

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.

31voto

Shaun Lebron Punkte 2422

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.com

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.

Powered by:

X