从Clojure函数中捕获打印的惯用方法是什么?
例如,函数将XML打印到*out*。我希望将此输出捕获为字符串。以下是REPL的典型用法:从Clojure函数中捕获打印的惯用方法是什么?,clojure,stdout,Clojure,Stdout,例如,函数将XML打印到*out*。我希望将此输出捕获为字符串。以下是REPL的典型用法: user> (prxml [:p "Test"]) <p>Test</p>nil 我编写了捕获输出函数,但我怀疑它存在类似的东西,只是我在或邮件列表中找不到它。我刚刚从Clojure中详细的XML处理中发现了不带str的 因此,我的示例的正确实现是: (def xml (with-out-str (prxml [:p "Test"]))) 更一般地说,如果您查看不带out
user> (prxml [:p "Test"])
<p>Test</p>nil
我编写了捕获输出函数,但我怀疑它存在类似的东西,只是我在或邮件列表中找不到它。我刚刚从Clojure中详细的XML处理中发现了不带str的 因此,我的示例的正确实现是:
(def xml (with-out-str (prxml [:p "Test"])))
更一般地说,如果您查看不带out str的
的源代码,您可以看到如何使用绑定将*out*
动态绑定到任何流。这适用于动态设置任何现有var的值
(def xml (with-out-str (prxml [:p "Test"])))