Clojure Programme beginnen an der Spitze zu ladende der " main "namespace (oft project-name.core) und werte jedes Formular von oben nach unten aus. Dies passiert, wenn das Programm startet und bevor irgendwelche "Haupt" -Funktionen aufgerufen werden.
Wenn ein require
Ausdruck ausgewertet wird, springt er in diesen Namespace und macht dort dasselbe. Wenn Requests dort auftreten, rekursiert es die Zweige dieser Namespaces, rekursiv lädt jeden Namespace nach Bedarf.
Wenn Sie also nicht explizit angeben, dass Ihr Namespace einen anderen Namespace benötigt, sind Sie der Reihenfolge ausgeliefert, in der andere Namespaces ihre Abhängigkeiten laden. Manchmal wird es funktionieren, und manchmal nicht zusammenhängende Änderungen an der Evalation Reihenfolge Ihrer entfernten Abhängigkeiten wird Ihren Code brechen.
Bitte, bitte, ... erklären Sie Ihre eigenen Anforderungen!
Willst du damit sagen, wenn ich 'clojure.string/ends-with?' Nur einmal in einer Datei benutze, sollte ich '' (clojure.string) 'oben setzen? – glts
Ja! und es ist wahrscheinlicher, dass es oben in der ns-Form im Abschnitt (: require ...) steht. wie folgt: '[clojure.string: refer [ends-with?]]' Das musst du nicht für clojure.core tun, obwohl alles andere eine gute Angewohnheit ist, die denjenigen helfen wird, die in den kommenden Jahren an deinem Code arbeiten habe ein glücklicheres Leben. –