给出如下列表:
(quote (do (println "Hello") (println "Goodbye")))
Run Code Online (Sandbox Code Playgroud)
:我怎么能把它变成一个格式很好的字符串,输出如下:
(do
(println "Hello")
(println "Goodbye")
)
Run Code Online (Sandbox Code Playgroud)
使用clojure.pprint/write有clojure.pprint/code-dispatch:
(clojure.pprint/write '(do (println "Hello") (println "Goodbye"))
:dispatch clojure.pprint/code-dispatch)
Run Code Online (Sandbox Code Playgroud)
对于少量代码,您将无法获得新的代码.但是像这样的电话
(clojure.pprint/write '(do (println "Hello") (println "Goodbye") (println "Hey, you left me out!"))
:dispatch clojure.pprint/code-dispatch)
Run Code Online (Sandbox Code Playgroud)
返回
=> (do
(println "Hello")
(println "Goodbye")
(println "Hey, you left me out!"))
Run Code Online (Sandbox Code Playgroud)
捕获它作为一个字符串包装调用 (with-out-str ...)
作为一个更加高效的替代方案clojure.pprint,你可能想尝试Brandon Bloom的fipp:
;; add [fipp "0.4.0"] to :dependencies
(require '[fipp.edn :as fipp])
(fipp/pprint '(do (println :foo) (println :bar) (println :quux))
{:width 30}) ; force wrapping despite small size of data
;; printed output:
(do
(println :foo)
(println :bar)
(println :quux))
Run Code Online (Sandbox Code Playgroud)
不幸的是,Fipp还不支持代码发送.