4
我在學習Clojure,至今我無法理解這個我敢肯定基本可笑的小難題。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
但如果我刪除調用myFunc from main和do,
lein repl
cloapp.core=> (myFunc "Hiya !")
Hiya !
nil
cloapp.core=>
然後我可以打電話給它。爲什麼是這樣 ?我假設這是與命名空間有關,但閱讀它我不能解決它。
一個
有趣的是,這確實有效。我在哪裏可以讀到這個?是否有相當於前向聲明? – AlMcLean
您可以使用'declare'來創建前向聲明:(聲明myFunc)。還要注意,駱駝案例並不是常規的clojure函數名稱,破折號是常規的。 –
好的,沒問題 - 謝謝你的擡頭。 – AlMcLean