1

私はClojureの初心者です。Clojure で計算ユニット (純粋な関数) を構築し、Java を使用してこれらすべての関数をプログラムにバインドしようとしています。

Java で Clojure にアクセスするために、私は 1 つのことを行いました。つまり、事前コンパイルとクラス生成です。しかし、それは面倒に見え、Clojure をアプリケーションに使用するという考えを弱めます。私の質問は、Java で Clojure 関数にアクセスしようとした人がいますか (クラス生成と AOT コンパイルを除く)? そうでない場合、純粋にClojureを使用して、これらの計算ユニット(またはClojure関数)をプログラム(相互にリンクされたいくつかのメソッドがある場合)にリンクする方法は?

4

2 に答える 2

3

概要として、一般的なプロセスは次のとおりです。

  • clojure ランタイムを含めます。
    import clojure.lang.RT;
  • ランタイムを使用して名前空間をロードします (これによりコンパイルされます)。
    RT.loadResourceScript("path/core.clj");
  • 呼び出したい関数の iFn オブジェクトを取得します。
    RT.var("mynamespace.core", "main")
  • invokeそのオブジェクトのメソッドを呼び出します
于 2013-02-25T18:27:44.350 に答える
0

私のclojure-utilsライブラリを見てください。ここには、Java から Clojure コードを呼び出すための便利なツールがたくさんあります。

簡単なデモンストレーションを次に示します。

import mikera.cljutils.Clojure;

public class DemoApp {
    public static void main(String [] args) {
        String s = "(+ 1 2)";
        System.out.println("Evaluating Clojure code: "+s);

        Object result=Clojure.eval(s);
        System.out.println("=> "+ result);
    }
} 

私は AOT コンパイルを避けることを好みます。代わりに、ユーティリティを使用して、mikera.cljutils.Clojure実行時に Clojure コードを動的にロード、コンパイル、および実行します。

于 2013-02-25T17:04:02.477 に答える