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

: