5

以下调用:

(String/format "%s" "a")

...在 Clojure 中引发“ClassCastException java.lang.String 无法转换为 [Ljava.lang.Object”异常。

(String/format "%s" (cast Object "a"))

....产生相同的异常。

4

3 回答 3

14

因为 java API 中的最后一个参数是数组Object[]而不是Object.

打电话(String/format "%s" (into-array ["a"]))

但更习惯使用(format "Hello %s" "world")

于 2013-01-14T17:00:16.020 回答
4

[L 表示“我想要数组”,所以使用(String/format "%s" (to-array "a")). 一般语法:(to-array ["a" 42 0.666]).

于 2013-01-14T16:53:50.447 回答
4

String.format正在使用可变参数,它们是内部普通的 Java 数组。然后,您需要将输入参数转换为数组,例如使用to-array

user=> (String/format "%s" (to-array "a"))
"a"
于 2013-01-14T16:55:25.547 回答