例如, prxml 函数将XML打印到* out *。我想将此输出捕获为String。以下是REPL的典型用法:
user> (prxml [:p "Test"])
<p>Test</p>nil
我喜欢这样做:
(def xml (capture-out (prxml [:p "Test"])))
我编写了 capture-out 函数,但我怀疑它存在类似的东西,只是我在API或邮件列表中找不到它。
答案 0 :(得分:6)
我刚从Clojure中的great blog post详细说明XML处理中发现了 with-out-str 。
所以我的例子的正确实现是:
(def xml (with-out-str (prxml [:p "Test"])))
答案 1 :(得分:6)
更一般地说,如果查看with-out-str
的来源,您可以看到如何使用*out*
将binding
动态绑定到任何流。这适用于动态设置任何现有var的值。