2012-02-18 10 views
8

W Javie można wykonać następujące czynności, aby sformatować liczbę zmiennoprzecinkową na wyświetlaczu:Dlaczego formatowanie ciągów nie działa w Clojure?

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

Teoretycznie powinienem być w stanie zrobić to samo z tym Clojure:

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

jednak kiedy biegnę powyższym fragmencie Clojure w REPL, pojawia się następujący wyjątek:

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

Co robię źle?

Odpowiedz

15

Java String.format trwa Object[] (lub Object...), aby użyć String.format w Clojure trzeba owinąć swoje argumenty w tablicy:

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

Clojure zapewnia otoki dla formatu, który jest łatwiejszy w użyciu:

(format "%2f" 5.0) 

Kyle

Powiązane problemy