lein repl内非默认名称空间中不存在clojure.core

问题描述 投票:0回答:1

无论何时,只要是莱恩代表,就>]

(in-ns 'some-namespace-other-than-name.core)

默认不包括clojure.core。

为了说明,起初我发现自己像这样被抓住了>>

db.core=> (in-ns 'db.seed)
#object[clojure.lang.Namespace 0x12738ef5 "db.seed"]
db.seed=> (use 'environ.core)
Syntax error compiling at (form-init7774277424301430706.clj:1:1).
Unable to resolve symbol: use in this context

我刚刚找到了解决方法:

db.seed=> (clojure.core/use 'clojure.core)
nil
db.seed=> (use 'environ.core)
nil

我的问题是,clojure.core似乎自动包含在名称空间myapp.core中,但没有包含在我可能会在REPL中切换到的任何其他名称空间中。(但是,显然,当我从核心名称空间运行程序时,那些名称空间do

可以访问clojure.core。)

这仅仅是莱宁根的默认设置吗?

想知道我在这里缺少什么理解或用法。

是,当我们运行程序时,只有myapp.core才需要访问clojure.core,而您的.core将使用的命名空间本身也不需要访问clojure.core,因为执行时它们仅导入到您应用的.core?因此,切换到其他名称空间来运行事物本质上是人为的吗?

我看了:main key in project.clj的文档,但找不到答案。

在lein repl中,每当我这样做(在ns'some-namespace-other-name-other-name.core中)时,默认都不包含clojure.core。解释一下,起初我发现自己被db.core => ...

请参见ClojureDocs.org中的这两个参考资料:

我认为只使用ns会更容易。

还有一个不错的blog posting by 8thlight。您还应该确保阅读How to ns

clojure leiningen
1个回答
1
投票

请参见ClojureDocs.org中的这两个参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.