Clojure 新手 - 命名空间问题

标签 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

但是如果我从 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/

相关文章:

clojure - 在当前 .jar 文件中获取 Clojure 命名空间

java - Clojure 和 Java 之间的界限在哪里?

clojure - 定义多个 var clojure 宏

java - 如何将类型化集合从 clojure 传递到 java?

clojure - :pre and :post? 的消息更易读

clojure - 为什么更多的语言不使用像 Clojures 这样的不可变模型?

oop - 什么是谓词调度

android - 在没有 Java 的情况下创建 Android 应用程序

clojure - 如何在 Clojure 中显示文档

java - 在 Clojure 中使用 Java 流