Come posso ottenere lo spazio dei nomi Clojurescript all'interno di un programma clojurescript? Voglio fare questo fornire alcune informazioni di debug (deve solo funzionare in modalità dev)Come posso ottenere lo spazio dei nomi Clojurescript all'interno di un programma clojurescript?
risposta
Gli spazi dei nomi non sono di prima classe in ClojureScript come in Clojure. Non c'è assolutamente alcun modo per ottenere lo spazio dei nomi in fase di esecuzione. È possibile ottenere queste informazioni al momento dell'espansione della macro se non si ha paura di accedere ad alcuni interni del compilatore ClojureScript. Probabilmente ci dovrebbe essere un'API per questo - ma non siamo ancora arrivati.
È possibile ottenere il nome del namespace corrente con questo trucco, che sfrutta ::
creazione di un simbolo namespace per voi nello spazio dei nomi corrente:
(namespace ::x)
Probabilmente non si vuole utilizzare tale valore per qualsiasi cosa, perché se il codice è compilato la rappresentazione interna cambierà. Se si vuole vivere pericolosamente, poi nel browser è possibile accedere all'oggetto js che contiene lo spazio dei nomi in questo modo:
(reduce (fn [ns n] (aget ns n))
js/window
(clojure.string/split (namespace ::x) #"\."))
Si può provare questo
(apply str (drop-last 2 (str `_)))
Durante l'espansione delle macro è possibile accedere &env
e recuperare le informazioni dello spazio dei nomi dalla chiave :ns
in questo modo:
(:ns &env)
(:name (:ns &env))
questo funziona solo a macro-ex pansion/compile time e non in fase di runtime.
- 1. Il compilatore ClojureScript non trova lo spazio dei nomi/file nella stessa directory
- 2. Come faccio a gestire il codice Clojurescript richiesto dai macro Clojurescript?
- 3. Interop ClojureScript
- 4. Entità ClojureScript e HTML
- 5. Come si ottiene un timestamp in ClojureScript?
- 6. Libreria data-ora ClojureScript
- 7. Verifica NaN in ClojureScript
- 8. come posso elencare tutto lo spazio dei nomi in XML?
- 9. Sintassi di richiedere in ClojureScript REPL
- 10. wrapping knockout.js con clojurescript
- 11. Interfaccia DOM Clojurescript
- 12. Come usare clojure.string/unirsi ClojureScript
- 13. Come compilare clojurescript in nodejs?
- 14. Document.write in Clojurescript?
- 15. Templating in ClojureScript
- 16. ClojureScript Parametri Dichiarazione errore
- 17. ClojureScript senza Java
- 18. Come ottenere i parametri di query in clojurescript?
- 19. js/console.log in ClojureScript
- 20. "usa lo spazio dei nomi" all'interno di un altro spazio dei nomi equivalente ad un alias?
- 21. ClojureScript: due punti di espressione
- 22. come utilizzare lo spazio dei nomi Yii
- 23. Librerie Clojurescript - impossibile trovare goog.require
- 24. Accesso a "questo" in Clojurescript
- 25. Best practice: usare lo spazio dei nomi o riaprire lo spazio dei nomi?
- 26. Deserializing xml, compreso lo spazio dei nomi
- 27. Come impostare un attributo di un elemento DOM in Clojurescript?
- 28. Questo sarebbe considerato ClojureScript idiomatico?
- 29. Creazione di animazioni con Clojurescript Om
- 30. Scrittura in Meteor con ClojureScript
Grazie! Avevo paura che sarebbe il caso – Zubair