Guardando clojure.test
source code, ho notato quanto segue:A cosa serve ^: dinamico su un defonce?
(defonce ^:dynamic
^{:doc "True by default. If set to false, no test functions will
be created by deftest, set-test, or with-test. Use this to omit
tests when compiling or loading production code."
:added "1.1"}
*load-tests* true)
C'è qualche beneficio o ragione dietro la prevenzione ridefinizione (vale a dire utilizzando defonce
) di un var, che è contrassegnato come ^:dynamic
?
Potrebbe essere per impedire a un avvertimento dal compilatore di avere una variabile non dinamica chiamata '* qualcosa *'? – thoferon
Quindi la domanda sarebbe: perché usare i paraorecchie sul nome, che sta esprimendo esattamente lo stesso significato di '^: dynamic' nelle vecchie versioni di Clojure. Controllerò se le versioni precedenti di 'clojure.test' stanno usando differenti strategie' def' per quella var. – skuro