2017-09-02 44 views
2

我正在與一些二進制格式的Clojure,它是有意義的,檢查十六進制格式的數字(0x10)。我如何配置Clojure以十六進制呈現數字,默認情況下?這在REPL中可能與我最相關,但我也對更一般的機制感興趣。如何在Clojure中設置默認數字格式?

回答

7

Clojure使用多種方法打印數據:print-method(旨在提供輸出供人讀取)和print-dup(產生可以通過讀取進行分析的輸出)。

因此,對於REPL,你可以簡單地提供您的打印方法的實施java.lang.Number就像下面的REPL會話:

123 
=> 123 

(prn 123) 
123 
=> 123 

(defmethod print-method Number 
    [n ^java.io.Writer w] 
    (.write w (format "0x%X" n))) 
=> #object[clojure.lang.MultiFn 0x52ad430a "[email protected]"] 

123 
=> 0x7B 

(prn 123) 
0x7B 
=> nil 
+1

這個完美的作品,包括蘋果酒會話中。謝謝! –