Почему в Clojure происходит сбой форматирования моей строки? - PullRequest
8 голосов
/ 18 февраля 2012

В Java я могу сделать следующее для форматирования числа с плавающей запятой для отображения:

String output = String.format("%2f" 5.0);
System.out.println(output);

Теоретически, я должен быть в состоянии сделать то же самое с этим Clojure:

(let [output (String/format "%2f" 5.0)]
    (println output))

Однако, когда я запускаю приведенный выше фрагмент Clojure в REPL, я получаю следующее исключение:

java.lang.Double cannot be cast to [Ljava.lang.Object;
[Thrown class java.lang.ClassCastException

Что я делаю не так?

1 Ответ

15 голосов
/ 18 февраля 2012

Java String.format занимает Object[] (или Object...), чтобы использовать String.format в Clojure, вам нужно заключить аргументы в массив:

(String/format "%2f" (into-array [5.0]))

Clojure предоставляет оболочку для формата, который проще в использовании:

(format "%2f" 5.0)

Кайл

...