2012-02-18 21 views
8

Trong Java, tôi có thể làm như sau để định dạng một số dấu chấm động để trưng bày:Tại sao định dạng chuỗi của tôi bị lỗi trong Clojure?

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

Về lý thuyết, tôi sẽ có thể làm điều tương tự với Clojure này:

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

Tuy nhiên , khi tôi chạy đoạn mã Clojure ở trên trong REPL, tôi nhận được ngoại lệ sau:

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

Tôi đang làm gì sai?

Trả lời

15

Java String.format mất một Object[] (hoặc Object...), để sử dụng String.format trong Clojure bạn cần phải quấn lập luận của bạn trong một mảng:

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

Clojure cung cấp một wrapper cho định dạng đó là dễ dàng hơn để sử dụng:

(format "%2f" 5.0) 

Kyle

Các vấn đề liên quan