core.clj文件的目的是什么?

17

我刚开始接触Clojure,对core.clj有一个非常基础的问题。

关于它有什么约定?应该放置什么代码?公共API?

这个文件是由leiningen在创建项目时生成的。我看了一些库的源代码,发现这个文件也在那里出现了(每个包中都有吗?)。

谢谢

3个回答

9

这个词汇本身没有明确定义,但在应用程序中通常指入口点,也就是main-函数。对于库来说,foo.core通常是用户导入以获得主要功能的命名空间。

你不一定非得按照这种方式去做,但这是一个比较可预测的位置,可以将你所写的任何内容的“核心部分”放在这里,即使你的实际逻辑和算法代码在其他地方。


8
Leiningen生成foo.core是因为它需要选择一个名称,而core是足够通用,可能不会出错。这是一个风格上的决定,但我通常选择将core.clj重命名为实际对于我的项目有意义的名称。

5
这只是Leiningen生成的模板文件。如果运行命令lein new foo,则命名空间foo.core并没有具体或标准含义。对于命名空间foo来说,它完全可以作为项目的主API容器。这只是一个免费供您开始工作的文件。
尽管如此,如果您有一个名为foo的项目,预期但并非强制要求该项目的所有代码存在于foo.*命名空间中。Leiningen将允许您构建一个包含文件src/foo.cljsrc/bar.clj的项目,并且foo需要bar是完全合理的,但在打包代码以进行分发时,这可能不是一个好主意。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接