Normalerweise rufe ich an
(keys (ns-publics 'foo))
Vars auflisten, die vom Namespace exportiert wurden foo
; zB clojure.contrib.monads
dafür kehrt zurück
(defmonad censor m-when-not m+write+m maybe-m maybe-t ...)
(das ...
steht für ziemlich viel mehr).
Im Allgemeinen gibt es eine Reihe von Funktionen, deren Namen in ns-
der Liste Vars nach Namespace beginnen, wobei bestimmte zusätzliche Kriterien beigefügt sind:
ns-map
- Die allgemeinste Funktion von allen gibt eine Karte zurück, die mit Symbolen versehen ist (eigentlich nicht für den Namespace qualifizierte Symbole), wobei der Wert, der jedem Symbol entspricht, der Var oder die Klasse ist, in die das Symbol im angegebenen Namespace aufgelöst wird.
ns-interns
- wie ns-map
, aber enthält nur die Vars internierte im gegebenen Namensraum (wie von anderen Namensräumen zu Vars gegenüber, die von dem gegebenen Namensraum zugänglich sind , aufgrund eines use
oder refer
Anruf oder die impliziten Verweisung von Vars aus clojure.core
.
ns-publics
- wie ns-interns
, enthält aber nur die nicht privaten Vars.
ns-imports
- wie ns-map
, enthält jedoch nur die Einträge, deren Werte Java-Klassen entsprechen.
Es gibt auch ns-aliases
Symbole, die als Kurzform-Aliase verwendet werden können, wenn auf Vars aus anderen Namespaces verwiesen wird. Wenn Sie beispielsweise anrufen (require '[clojure.contrib.math :as math])
, ns-aliases
wird ein Eintrag mit dem Schlüssel math
(dem Symbol) eingefügt, dessen Wert der tatsächliche Namespace ist clojure.contrib.math
. Diese Zuordnung ist nicht in der von zurückgegebenen Zuordnung enthalten ns-map
.
doc
Funktion ein Grund, warum die Bereitstellung von Dokumentation für alte Bibliotheken und andere Pakete keine besonders hohe Priorität hat?