我正在使用Clojure处理一些二进制格式,其中检查十六进制格式的数字是有意义的(0x10).如何配置Clojure以将数字呈现为十六进制,默认情况下?在REPL中,这可能与我最相关,但我也对更一般的机制感兴趣.
Clojure使用多种方法打印数据:( print-method旨在提供人类可以读取的输出)和print-dup(产生可以通过读取解析的输出).
因此,对于REPL,您可以java.lang.Number在下面的REPL会话中简单地为s 提供print-method的实现:
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
Run Code Online (Sandbox Code Playgroud)