Clojure 和 leiningen:声明和要求命名空间
Clojure and leiningen: declare and require namespace
我正在尝试了解如何通过 lein 声明和要求命名空间。我创建了一个项目 "interview",在 "src/interview" 中我有一个名为 "prompts" 的文件夹,它有一个名为 rawlist.clj:
的文件
+ /interview project root
|--+ /src lein src
| |--+ /interview
| |--+ core.clj
| |--+ /prompts my new folder
| |--+ rawlist.clj
rawlist.clj 文件:
(ns interview.prompts.rawlist)
;...
问题:
- 如何在 repl 中要求 rawlist?
- 我正在尝试
(require 'interview.prompts.rawlist)
- 如何要求使用rawlist的一些功能?
- 如何正确地为此创建一个测试文件夹?
见clojure docs for require。这是一个示例,其中为命名空间指定了别名 r
,以便您可以缩短名称。
(require [interview.prompts.rawlist :as r])
(r/your-function)
您也可以随时参考全名:
(interview.prompts.rawlist/another-fn)
require 有多种使用方式,例如如果您不想要前缀,请参考。假设你有 3 个函数 f1,f2,f3,那么你可以通过以下方式引用它们:
(require [interview.prompts.rawlist :refer [f1 f2] :as r)
(f1)
(f2)
(r/f3)
注意第三种情况,因为它不在引用列表中,所以你必须使用r
前缀。
对于测试文件夹,请阅读documentation for leiningen那里的解释,但基本上可以归结为:
+ /interview
|--+ src/
|--+ test/
并且子文件夹结构遵循与 src 目录完全相同的模式。
您可以在 project.clj
中使用主项目宏中的 :source-paths
和 :test-paths
键添加其他文件夹。有关详细信息,请参阅 the sample project。
我建议您吸收上面示例项目中的所有内容,并阅读 leiningen tutorial。
最后,当在其他来源(例如在您的测试中)引用 ns
declaration 中的函数时,您使用相同的格式,但使用 :require
形式:
(ns foo.bar
(:require [interview.prompts.rawlist :as r]))
(r/foo-fn)
我正在尝试了解如何通过 lein 声明和要求命名空间。我创建了一个项目 "interview",在 "src/interview" 中我有一个名为 "prompts" 的文件夹,它有一个名为 rawlist.clj:
的文件+ /interview project root
|--+ /src lein src
| |--+ /interview
| |--+ core.clj
| |--+ /prompts my new folder
| |--+ rawlist.clj
rawlist.clj 文件:
(ns interview.prompts.rawlist)
;...
问题:
- 如何在 repl 中要求 rawlist?
- 我正在尝试
(require 'interview.prompts.rawlist)
- 我正在尝试
- 如何要求使用rawlist的一些功能?
- 如何正确地为此创建一个测试文件夹?
见clojure docs for require。这是一个示例,其中为命名空间指定了别名 r
,以便您可以缩短名称。
(require [interview.prompts.rawlist :as r])
(r/your-function)
您也可以随时参考全名:
(interview.prompts.rawlist/another-fn)
require 有多种使用方式,例如如果您不想要前缀,请参考。假设你有 3 个函数 f1,f2,f3,那么你可以通过以下方式引用它们:
(require [interview.prompts.rawlist :refer [f1 f2] :as r)
(f1)
(f2)
(r/f3)
注意第三种情况,因为它不在引用列表中,所以你必须使用r
前缀。
对于测试文件夹,请阅读documentation for leiningen那里的解释,但基本上可以归结为:
+ /interview
|--+ src/
|--+ test/
并且子文件夹结构遵循与 src 目录完全相同的模式。
您可以在 project.clj
中使用主项目宏中的 :source-paths
和 :test-paths
键添加其他文件夹。有关详细信息,请参阅 the sample project。
我建议您吸收上面示例项目中的所有内容,并阅读 leiningen tutorial。
最后,当在其他来源(例如在您的测试中)引用 ns
declaration 中的函数时,您使用相同的格式,但使用 :require
形式:
(ns foo.bar
(:require [interview.prompts.rawlist :as r]))
(r/foo-fn)