例如,prxml函數將XML打印到* out *。我想反而將此輸出捕獲爲一個字符串。下面是從REPL典型用法:從Clojure函數捕獲打印到* out *的慣用方法是什麼?
user> (prxml [:p "Test"])
<p>Test</p>nil
我反而喜歡做的事:
(def xml (capture-out (prxml [:p "Test"])))
我做了拍攝出功能,但我懷疑類似的東西存在,只有我在API或郵件列表中找不到它。
例如,prxml函數將XML打印到* out *。我想反而將此輸出捕獲爲一個字符串。下面是從REPL典型用法:從Clojure函數捕獲打印到* out *的慣用方法是什麼?
user> (prxml [:p "Test"])
<p>Test</p>nil
我反而喜歡做的事:
(def xml (capture-out (prxml [:p "Test"])))
我做了拍攝出功能,但我懷疑類似的東西存在,只有我在API或郵件列表中找不到它。
我剛剛從great blog post中發現了with-out-str,詳細介紹了Clojure中的XML處理。
所以正確執行我的例子是:
(def xml (with-out-str (prxml [:p "Test"])))
更一般地,如果你看一下源with-out-str
你可以看到如何動態綁定*out*
使用binding
任何流。這適用於動態設置任何現有變量的值。