在开发过程中让 clojure 函数在每个命名空间中可用?

Der*_*urn 5 clojure

在 Clojure 开发期间,我在 REPL 中使用了许多有用的辅助函数。这包括一些内置函数,如docand pprint,但也包括我自己的一些自定义函数user.clj。默认的 clojure 体验似乎是:

dev> (doc +)
;; works
dev> (in-ns 'project.core)
project.core> (doc +)
;; what is this "doc" thing you're talking about!?!?
Run Code Online (Sandbox Code Playgroud)

这是非常令人恼火的(我知道我可以参考clojure.repl/doc这里)。无论我当前在哪个命名空间中操作,是否有一种简单的方法可以确保在开发过程中某些内容可用?

Ale*_*ler -1

如果您遇到这种情况,请执行以下操作:

(clojure.core/refer-clojure)
Run Code Online (Sandbox Code Playgroud)

要求并加载 clojure.core 中的所有内容。


或者另一种方法(如果project.core存在)是:

(require 'project.core)
(in-ns 'project.core)
Run Code Online (Sandbox Code Playgroud)

通过加载命名空间require将引用 clojure.core。


或者如果project.core不存在,则执行以下操作:

(ns project.core)
Run Code Online (Sandbox Code Playgroud)

ns宏将同时执行refer-clojurein-ns