私はjava libをclojureにラップしていますが、可変長引数を扱う際に問題があります。言って、clojureでjava可変長引数を扱うには?
TestClass.aStaticFunction(Integer... intList){/*....*/}
私はこの機能をclojureで呼び出すことができますか?
私はjava libをclojureにラップしていますが、可変長引数を扱う際に問題があります。言って、clojureでjava可変長引数を扱うには?
TestClass.aStaticFunction(Integer... intList){/*....*/}
私はこの機能をclojureで呼び出すことができますか?
Javaのvarargsはactually arraysなので、Clojureで配列を渡すことでvararg関数を呼び出すことができます。
あなたは配列に(多分、可変引数関数のClojureのの様々なを使用して)の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可変長引数は、実際には配列を入力として必要とします。例えばのために
(TestClass/aStaticFunction (into-array Integer some-sequence-of-integers))
(TestClass/aStaticFunction (to-array '(1 2 3 4 5)))
:
だから、Clojureの中で呼び出しが次のようになります
(java.util.Arrays/asList (to-array '(1 2 3 4 5)))
([Clojureの中の引数の可変数を持つJavaインターフェースメソッドを実装]の
可能重複http://stackoverflow.com/questions/9103777/implement-a-java-interface-method-with-a -variable-number-of-args-in-clojure) – Jeremy