在Java中,varg函数可以这样编写:
public static void foo(int ... a)
{
// method body
}
它在Java中这样调用:
<OBJ>.foo(1, 2, 3);
它在Clojure中被这样调用:
(<OBJ>/foo (int-array [1 2 3])
是否可以在Clojure中编写foo
,以便它在Java中作为varg函数被调用?
答案 0 :(得分:2)
不幸的是,有no option用于制作Java样式的varargs方法(即,接受数组并将VARARGS(0x80)位设置为true的方法)。
相反,您可以创建一个接受数组的函数(如果需要varargs,可以在Java中编写一个varargs包装器),也可以创建Clojure的[&rest]
函数,并.invoke()
与varargs一起使用。