我'包裹一个java lib放到Clojure的,但我有处理可变长度参数问题。 说,
TestClass.aStaticFunction(Integer... intList){/*....*/}
我怎么能叫Clojure中的这个功能呢?
我'包裹一个java lib放到Clojure的,但我有处理可变长度参数问题。 说,
TestClass.aStaticFunction(Integer... intList){/*....*/}
我怎么能叫Clojure中的这个功能呢?
由于Java可变参数是实际数组 ,你可以通过一个数组叫可变参数Clojure中的功能。
你可以转换一个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)))
爪哇可变长度参数需要的是一个数组作为输入。
因此,在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)))