如何在clojure中编写Java varg函数?

时间:2018-08-21 09:41:35

标签: clojure

在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函数被调用?

1 个答案:

答案 0 :(得分:2)

不幸的是,有no option用于制作Java样式的varargs方法(即,接受数组并将VARARGS(0x80)位设置为true的方法)。

相反,您可以创建一个接受数组的函数(如果需要varargs,可以在Java中编写一个varargs包装器),也可以创建Clojure的[&rest]函数,并.invoke()与varargs一起使用。