【问题标题】:Clojure :: (String/format "%s" "a") :: fails with ClassCastExceptionClojure :: (String/format "%s" "a") :: 失败并出现 ClassCastException
【发布时间】:2013-01-14 16:48:39
【问题描述】:

以下调用:

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

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

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

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

【问题讨论】:

  • 您有什么理由需要使用String.format 而不是Clojure.core/format - 它为您包装了to-array(format "%s" "a")
  • 没有理由特别使用 String.format,只是好奇......

标签: clojure


【解决方案1】:

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

只需拨打(String/format "%s" (into-array ["a"]))

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      user=> (String/format "%s" (to-array "a"))
      "a"
      

      【讨论】:

        猜你喜欢
        • 2012-06-23
        • 1970-01-01
        • 2015-06-10
        • 2022-10-19
        • 1970-01-01
        • 2018-11-16
        • 2019-02-19
        • 1970-01-01
        • 2013-03-09
        相关资源
        最近更新 更多