6

我已经使用定义了一个 java 类gen-class,并且每次启动 repl 时都会编译它。但是,如果我想对类进行更改,我发现我必须重新启动并重新编译该类。有没有办法在不关闭repl的情况下做到这一点?

一个例子

我正在研究这个https://github.com/zcaudate/hara/blob/master/src/hara/ova/impl.clj

并且项目中有一条线。clj

:aot [hara.ova.impl]

所以说文件已经加载,我可以这样做:

(import hara.ova.Ova)
(def a (Ova.))

我想为bar类添加另一个方法,我只想-barhara.ova.impl命名空间中定义,调用一个compile-gen-class函数来重新加载类,然后在不重新加载 repl 的情况下执行此操作:

(import hara.ova.Ova)
(def a (Ova.))
(.bar a)

现在,Cc Ck 不允许这样做。

4

1 回答 1

5

您需要compile在命名空间上调用该函数。

(ns test) (gen-class :name test.Cls) (comment (compile 'test))

编译调用需要注释掉,这样它就不会递归调用自己。我经常将这些保留在我的开发文件中,以便通过评估该编译表达式来快速重新编译定义。

于 2014-04-12T18:11:31.947 回答