Java libをclojureにラップしていますが、可変長引数の処理に問題があります。たとえば、
TestClass.aStaticFunction(Integer... intList){/*....*/}
Clojureでこの関数を呼び出すにはどうすればよいですか?
Java varargsは 実際には配列 なので、配列を渡すことでClojureでvararg関数を呼び出すことができます。
Clojure seqを(Clojureのさまざまな可変引数関数を使用して)配列に変換できます。
(TestClass/aStaticFunction (into-array Integer [(int 1),(int 2)]))
または
(defn a-static-function-wrapper [& args]
(TestClass/aStaticFunction (into-array Integer args))
または、配列を作成してそのインデックスを手動で設定します
(TestClass/aStaticFunction (doto (make-array Integer 3)
(aset 0 first-element)
(aset 1 second-element)
(aset 2 third-element)))
Java可変長引数は、実際には入力として配列を必要とします。
したがって、Clojureでは、呼び出しは次のようになります。
(TestClass/aStaticFunction (into-array Integer some-sequence-of-integers))
(TestClass/aStaticFunction (to-array '(1 2 3 4 5)))
例:.
(Java.util.Arrays/asList (to-array '(1 2 3 4 5)))