javaから実行その4 コンパイルして、invokeから引数を渡して、その引数(オブジェクト)のメソッドを呼ぶ - Clojure 2014/01/26

少しずつみえてきました。
Clojureです。

javaから実行その4 コンパイルして、invokeから引数を渡して、その引数(オブジェクト)のメソッドを呼ぶです。

package jp.deiji.ext; import java.io.StringReader; import clojure.lang.Compiler; import clojure.lang.Var; public class ExtClojure04 { public static void main(String[] args) { a(); } static void a() { new clojure.lang.RT(); {// (1) 引数でわたされたオブジェクトのメソッドを呼ぶ String str = "(defn p[o](println (. o toString)))"; Object o = Compiler.load(new StringReader(str)); System.out.println(o); System.out.println(o.getClass()); Var v = (Var) o; v.invoke("ok"); } {// (2) 引数でわたされたオブジェクトのメソッドに引数を渡す String str = "(defn append[o](. o append \"ok\"))"; Object o = Compiler.load(new StringReader(str)); System.out.println(o); System.out.println(o.getClass()); Var v = (Var) o; StringBuilder builder = new StringBuilder(); v.invoke(builder); System.out.println(builder); } } }


結果

#'clojure.core/p
class clojure.lang.Var
ok
#'clojure.core/append
class clojure.lang.Var
ok

: