【发布时间】:2010-11-10 03:37:26
【问题描述】:
我在 Clojure 中有一个简单但令人沮丧的问题,我有一个函数(我们称之为 read-function),它可以从用户的输入中找出用户想要做什么,然后调用另一个执行该操作的函数(我们称之为 action-功能)。此操作函数在完成后调用读取函数,以便用户执行其他任务。
现在我的问题是,如果我将 read-function 的代码放在 action-function 的代码之前,我会在 read-function 中得到一个错误,说它不知道 action-function 是什么(因为它进一步向下),如果我做相反的事情,那么我显然会收到类似的错误,说读取功能无法解析等。
有没有简单的方法来解决这个问题?
实际代码:
(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))))))
)
像这样,我在 ajout 函数的 (readCmd botin) 行收到错误消息: 无法解析符号:readCmd in this context
如果我将这两个函数的代码以相反的顺序放置,我会收到一条错误消息: 无法解析符号:此上下文中的 ajout
【问题讨论】:
-
您能否发布一个简单的代码示例来说明什么不起作用。这将有助于追查问题。
-
当然----代码开始---- (defn add [book] (def book-in-function book) (readCmd book-in-function) ) (defn readCmd [book] (println "Enter cmd") (def book-in-function book) (let [cmd (read-line)] (if (.equals cmd "add") ((println "Adding") (add book-in-function )) (println "Dont know")) ) ) ---代码结束---如果我这样写,我会得到 Unable to resolve symbol: readCmd in this context 在 add 中 read-cmd 调用的行函数如果我将这两个函数以相反的顺序放置,我会得到类似的错误,但对于 read-cmd 函数中的 add 函数
-
我在看到评论的样子后编辑了原始帖子:)
-
赞成,因为我知道将来人们会在谷歌上搜索这个!好问题!
标签: clojure