从 Clojure 函数捕获打印到 *out* 的惯用方法是什么?
例如, prxml 函数打印 XML到*出去*。我想将此输出捕获为字符串。以下是 REPL 的典型用法:
user> (prxml [:p "Test"])
<p>Test</p>nil
我宁愿这样做:
(def xml (capture-out (prxml [:p "Test"])))
我编写了 capture-out 函数,但我怀疑类似的东西存在,只是我很难在其中找到它API 或邮件列表。
For example, the prxml function prints XML to *out*. I would like to instead capture this output as a String. Here is the typical usage from a REPL:
user> (prxml [:p "Test"])
<p>Test</p>nil
I'd instead like to do:
(def xml (capture-out (prxml [:p "Test"])))
I made up the capture-out function, but I suspect something like it exists, only I'm having trouble finding it in the API or mailing list.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我刚刚从这个 精彩的博客文章详细介绍了 Clojure 中的 XML 处理。
所以我的例子的正确实现是:
I just discovered the with-out-str from this great blog post detailing XML processing in Clojure.
So the correct implementation of my example is:
更一般地说,如果您查看
with-out-str
的源代码,您可以了解如何使用binding
将*out*
动态绑定到任何流>。这适用于动态设置任何现有变量的值。More generally, if you look at the source for
with-out-str
you can see how to dynamically bind*out*
to any stream usingbinding
. This works for dynamically setting the value of any existing var.