2012-02-18 13 views
8

In Java, posso effettuare le seguenti operazioni per formattare un numero a virgola mobile per la visualizzazione:Perché la formattazione della stringa non funziona in Clojure?

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

In teoria, dovrei essere in grado di fare la stessa cosa con questo Clojure:

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

Tuttavia , quando ho eseguito quanto sopra Clojure frammento nel REPL, ottengo la seguente eccezione:

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

che cosa sto facendo di sbagliato?

risposta

15

Java di String.format prende un Object[] (o Object...), da utilizzare String.format in Clojure è necessario avvolgere le argomentazioni in un array:

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

Clojure fornisce un wrapper per il formato che è più facile da usare:

(format "%2f" 5.0) 

Kyle

Problemi correlati