2012-02-18 16 views
8

En Java, que puede hacer lo siguiente para dar formato a un número de coma flotante para la exhibición:¿Por qué mi formato de cadena falla en Clojure?

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

En teoría, debería ser capaz de hacer lo mismo con este Clojure:

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

Sin embargo , cuando ejecuto el anterior fragmento de Clojure en el REPL, me sale el siguiente excepción:

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

¿Qué estoy haciendo mal?

Respuesta

15

de Java String.format toma un Object[] (o Object...), para usar String.format en Clojure que necesita para envolver sus argumentos en un array:

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

Clojure proporciona un contenedor para formato que es más fácil de usar:

(format "%2f" 5.0) 

Kyle

Cuestiones relacionadas