javaから実行その3 コンパイルして、invokeから引数を渡す - Clojure
2014/01/26

clojureです。
javaから文字列を渡してコンパイルして、できあがったオブジェクトを実行してみます。
その際に、ivokeするときに引数を渡して実行します。
package jp.deiji.ext;
import java.io.StringReader;
import clojure.lang.Compiler;
import clojure.lang.Var;
public class ExtClojure03 {
public static void main(String[] args) {
a();
}
static void a() {
new clojure.lang.RT();
String str = " (defn hello [name] (println (str \"hello \" name)))";
Object o = Compiler.load(new StringReader(str));
System.out.println(o);
System.out.println(o.getClass());
Var v = (Var) o;
v.invoke("ugo");
}
}
実行結果
#'clojure.core/hello
class clojure.lang.Var
hello ugo
: