Clojure和Atom Proto-REPL:您总是需要从名称空间手动编译函数吗?

Clojure和Atom Proto-REPL:您总是需要从名称空间手动编译函数吗?,clojure,namespaces,read-eval-print-loop,Clojure,Namespaces,Read Eval Print Loop,我试图找出如何在clojure中使用REPL工具提高效率,但我发现名称空间在lein项目中的工作方式有点棘手 当我设置名称空间时,类似于: (ns example-ns.core (:require [clojure.java.jdbc :as sql])) 然后声明其中的一些函数(对于本文的上下文来说,这些函数实际上并不重要) 如果我试图引用这个名称空间中的内容,每次都必须手动编译我想要的所有内容 (ns example-ns.other (:require [example-ns.

我试图找出如何在clojure中使用REPL工具提高效率,但我发现名称空间在lein项目中的工作方式有点棘手

当我设置名称空间时,类似于:

(ns example-ns.core
  (:require [clojure.java.jdbc :as sql]))
然后声明其中的一些函数(对于本文的上下文来说,这些函数实际上并不重要)

如果我试图引用这个名称空间中的内容,每次都必须手动编译我想要的所有内容

(ns example-ns.other
  (:require [example-ns.core :refer [insert-something!]]
            [clojure.java.jdbc :as sql])) 
如果我尝试这样的东西,它会告诉我,
插入一些东西
不可用,除非导入
示例ns.core
并手动编译它

这有必要吗?还是我遗漏了一些基本的东西

这在我学习初级材料时不是什么大问题,但现在它变得不可用了,因为随着项目的发展,我一次又一次地手动重新编译成吨的材料


这是在带有Proto REPL插件的Atom文本编辑器中的lein项目的上下文中

我建议签出
测试刷新
。它帮助您自动重新编译项目的必要部分,然后重新运行单元测试:

与其在repl中键入内容,不如将其转换为单元测试(即使它只是一个
println
语句)。然后,
testrefresh
将为您编译并运行它,它与repl体验非常相似(但我认为要好得多)

(ns example-ns.other
  (:require [example-ns.core :refer [insert-something!]]
            [clojure.java.jdbc :as sql]))