clojure variadic-functions clojure-java-interop

¿Cómo manejar los argumentos de longitud variable de Java en clojure?



variadic-functions clojure-java-interop (3)

Como los varargs de Java son en realidad matrices , puede llamar a las funciones vararg en Clojure pasando una matriz.

Podrías convertir una secuencia de Clojure (tal vez usando la variedad de funciones de argumentos variables de Clojure) en una matriz:

(TestClass/aStaticFunction (into-array Integer [(int 1),(int 2)]))

o

(defn a-static-function-wrapper [& args] (TestClass/aStaticFunction (into-array Integer args))

O crea una matriz y configura sus índices manualmente

(TestClass/aStaticFunction (doto (make-array Integer 3) (aset 0 first-element) (aset 1 second-element) (aset 2 third-element)))

Estoy envolviendo una java lib en clojure, pero tengo problemas con los argumentos de longitud variable. Decir,

TestClass.aStaticFunction(Integer... intList){/*....*/}

¿Cómo podría llamar a esta función en clojure?


Los argumentos de longitud variable de Java en realidad quieren una matriz como entrada.

Entonces en Clojure la llamada debería ser algo así como:

(TestClass/aStaticFunction (into-array Integer some-sequence-of-integers))


(TestClass/aStaticFunction (to-array ''(1 2 3 4 5)))

Por ej.

(java.util.Arrays/asList (to-array ''(1 2 3 4 5)))