如何捕获clojure的标准输出?

Zub*_*air 16 clojure

我有一些我需要从Clojure程序中捕获的printlns,我想知道如何捕获输出?

我试过了:

(binding [a *out*]
    (println "h")
    a
)
Run Code Online (Sandbox Code Playgroud)

:但这不起作用

Mic*_*are 36

(with-out-str (println "this should return as a string"))
Run Code Online (Sandbox Code Playgroud)


Ale*_*ard 8

只是为了扩展Michiel的答案,当您想要将输出捕获到可以with-out-str与之结合的文件时spit.

如果你不想在写出之前在内存中建立一个巨大的字符串,那么你可以with-out-writerclojure.contrib.io库中使用它.

with-out-writer是一个宏,它可以很好地封装文件资源的正确打开和关闭,以及在该文件中*out*执行代码时对该文件的编写器的绑定.