Lin*_*son 1 namespaces clojure leiningen read-eval-print-loop
在Leiningen REPL中运行以下代码:
(in-ns 'my-namespace.core)
(+ 2 2)
Run Code Online (Sandbox Code Playgroud)
导致此错误:
CompilerException java.lang.RuntimeException: Unable to resolve symbol: + in this context
Run Code Online (Sandbox Code Playgroud)
为什么?
使用时创建新的命名空间时in-ns,clojure.core默认情况下不会引用核心命名空间()."引用"命名空间意味着将它包含在您的命名空间中,以便您可以将该命名空间的符号称为您自己的符号.
仍然可以使用符号来clojure.core使用完全限定名称,如下所示:
(clojure.core/+ 2 2)
Run Code Online (Sandbox Code Playgroud)
解决方案是:
ns而不是in-ns像这样:(ns my-namespace.core)clojure.core,如下:(clojure.core/refer-clojure)