作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究一个 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/
我是一名优秀的程序员,十分优秀!