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定義-barし、関数を呼び出してクラスをリロードし、repl をリロードせずにこれを実行したいだけです。hara.ova.implcompile-gen-class

(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 に答える