programmi Clojure partono parte superiore della " main "namespace (spesso project-name.core) e valuta ogni modulo dall'alto verso il basso. Ciò accade all'avvio del programma e prima che vengano invocate le funzioni "principali".
Quando viene valutata un'espressione require
, passa a tale spazio dei nomi e fa la stessa cosa lì. Se è necessario incontrarsi lì ricorre giù rami di tali spazi dei nomi, in modo ricorsivo caricando ogni spazio dei nomi come richiesto.
Quindi, se non si specifica esplicitamente che il proprio spazio dei nomi richiede un altro spazio dei nomi, allora si è in balia dell'ordine che gli altri namspace che si richiedono caricano le loro dipendenze. A volte funzionerà e le modifiche a volte non correlate all'ordine di evacuazione delle dipendenze distanti interromperanno il codice .
Quindi, per favore, per favore ... dichiarate le vostre esigenze!
fonte
2016-03-24 21:16:38
Stai dicendo che se uso, diciamo 'clojure.string/ends-with? 'Solo una volta in un file, dovrei comunque mettere' (richiede' clojure.string) 'in alto? – glts
Sì! e più probabilmente metterlo nella forma ns in alto nella sezione (: require ...). come questo '[clojure.string: refer [finisce-con?]]' Non è necessario farlo per clojure.core, anche se tutto il resto è una buona abitudine che aiuterà coloro che lavorano sul tuo codice negli anni a venire avere vite più felici –