gpt4 book ai didi

java - Clojure:如何将 Varargs 扩展为 Java 方法列表

转载 作者:行者123 更新时间:2023-11-30 07:06:06 25 4
gpt4 key购买 nike

我正在研究一个 clojure 函数,它接受可变数量的参数,并将它们传递给 java 方法调用

(defn foo [var1 var2 & vars]
(let [bar (.foo var1)]
(.gaz bar var2 vars)))

这在 vars 为空时有效,但是当我在 vars 中放入一些东西时,我得到

java.lang.ClassCastException: Cannot cast clojure.lang.ArraySeq to [Ljava.lang.Object;

似乎变量没有被拼接/插入到方法调用的可变参数列表中。我怎样才能做到这一点?我想同时使用它

(foo a b)

(foo a b c d e f)

让它调用

(.gaz bar b c d e f) ;; <- note the list is embedded

最佳答案

请注意,这会返回您的错误消息所要求的类型:

user> (into-array Object [1 2 3])
#<Object[] [Ljava.lang.Object;@571bc284>

从上下文来看,我假设 .gaz 可能是可变参数。如果是这样,您只需要以下内容:

(.gaz bar var2 (into-array Object vars))

关于java - Clojure:如何将 Varargs 扩展为 Java 方法列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25955489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com