我正在学习 Clojure,到目前为止我无法理解这个小难题,我确信这是非常基本的。
我有这个文件:
(ns cloapp.core
(:gen-class))
(defn -main
"I don't do a whole lot ... yet."
[& args]
(println "Hello, World!")
(println "Well Hi there, im a string !")
(println "Why wont this work !")
(myFunc "Hiya"))
(defn myFunc [aVar]
(println aVar))
如果我尝试运行它,
lein run
它提示并说,
Caused by: java.lang.RuntimeException: Unable to resolve symbol: myFunc in this context
但是如果我从 main 和 do 中删除对 myFunc 的调用,
lein repl
cloapp.core=> (myFunc "Hiya !")
Hiya !
nil
cloapp.core=>
然后我就可以调用它了。为什么是这样 ?我假设这与 namespace 有关,但仔细阅读后我无法解决。
一个
最佳答案
myFunc 符号尚未定义,因此 main 找不到它。如果将 myFunc 的定义移到 main 之上,那么它将起作用。
关于Clojure 新手 - 命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869581/