¿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)))