javaから実行その4 コンパイルして、invokeから引数を渡して、その引数(オブジェクト)のメソッドを呼ぶ - Clojure
2014/01/26
clojure
java
少しずつみえてきました。
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
: