如何在Clojure中设置默认数字格式?

时间:2017-09-02 18:21:52

标签: clojure

我正在使用Clojure处理一些二进制格式,其中检查十六进制格式的数字(0x10)是有意义的。如何配置Clojure以将数字呈现为十六进制,默认情况下?在REPL中,这可能与我最相关,但我也对更一般的机制感兴趣。

1 个答案:

答案 0 :(得分:7)

Clojure使用多种方法打印数据:print-method(旨在提供人类可以读取的输出)和print-dup(产生可以通过读取解析的输出)。

因此,对于REPL,您可以简单地为java.lang.Number提供print-method的实现,就像在下面的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 "clojure.lang.MultiFn@52ad430a"]

123
=> 0x7B

(prn 123)
0x7B
=> nil