Je teste avec des fichiers et non REPL.
Voici mon fichier clj :
tests.my-clj-file.clj
(ns tests.my-clj-file
(:require [clojure.repl :as repl]))
(defn my-fn
[]
1)
(println (repl/source my-fn))
La sortie est :
Source introuvable
nil
Je teste avec des fichiers et non REPL.
Voici mon fichier clj :
tests.my-clj-file.clj
(ns tests.my-clj-file
(:require [clojure.repl :as repl]))
(defn my-fn
[]
1)
(println (repl/source my-fn))
La sortie est :
Source introuvable
nil
Il est seulement possible de lire la source des Vars qui sont sur le disque.
Donc, si vous avez évalué le tampon, il est chargé dans le REPL et vous ne pouvez pas voir la source avec source
.
Une façon d'accomplir la lecture de la source est de placer my-fn
dans un autre fichier (par exemple, /mon_autre_fichier_clj.clj
):
(ns mon-autre-fichier-clj)
(defn my-fn
[]
1)
Ne pas évaluer le tampon.
Ensuite, allez à /tests/mon_fichier_clj.clj
et évaluez :
(ns tests.mon-fichier-clj
(:require [clojure.repl :as repl]
[autre-fichier :refer [my-fn]))
(println (repl/source my-fn))
Ceci affiche correctement la source.
(defn my-fn
[]
1)
nil
Si vous essayez (doc repl/source)
, vous obtiendrez quelque chose comme ceci (avec emphase ajoutée) :
Imprime le code source du symbole donné, s'il peut le trouver. Cela nécessite que le symbole résolve à une Var définie dans un espace de noms pour lequel le .clj est dans le classpath.
Donc clojure.repl/source
ne fonctionne qu'avec du code qui a été chargé à partir de fichiers source. Cela ne fonctionnera pas si vous saisissez le code dans le REPL (peu importe si le code se trouve dans un fichier).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.