J'ai un problème simple mais frustrant avec Clojure. J'ai une fonction (appelons-la read-function) qui détermine ce que l'utilisateur veut faire à partir de son entrée, puis appelle une autre fonction qui le fait (appelons-la action-function). Cette fonction-action appelle la fonction-lecture lorsqu'elle a terminé, afin que l'utilisateur puisse effectuer une autre tâche.
Mon problème est que si je place le code de la fonction de lecture avant celui de la fonction d'action, j'obtiens une erreur dans la fonction de lecture disant qu'elle ne sait pas ce qu'est la fonction d'action (parce que son code est plus bas) et si je fais l'inverse, j'obtiens une erreur similaire, disant que la fonction de lecture ne peut être résolue, etc.
Existe-t-il un moyen simple de résoudre ce problème ?
Le code actuel :
(defn ajout [botin]
(def botin botin)
(readCmd botin)
)
(defn readCmd [botin]
(println "Entrez une commande svp ")
(def botin botin)
(let [cmd (read-line)]
(if (.equals cmd "a") ((println "Ajout 8o") (ajout botin))
(if (.equals cmd "e") ((println "Elim 8o") (eliminer botin))
(if (.equals cmd "i") ((println "Imprim 8o") (imprimer botin))
((println "Commande invalide, nous vous rapellons que les commandes possibles sont : ") (print-les-cmd) (readCmd))))))
)
comme ceci, j'obtiens une erreur à la ligne (readCmd botin) dans la fonction ajout disant : Impossible de résoudre le symbole : readCmd dans ce contexte
Si je mets le code de ces deux fonctions dans l'ordre inverse, j'obtiendrai une erreur disant : Impossible de résoudre le symbole : ajout dans ce contexte