2009-12-03 11 views
5

Por ejemplo, la función prxml imprime XML a * out *. En su lugar, me gustaría capturar esta salida como una cadena. Aquí está el uso típico de un REPL:¿Cuál es la forma idiomática de capturar impresiones a * out * desde una función Clojure?

user> (prxml [:p "Test"]) 
<p>Test</p>nil 

me gusta hacer en su lugar:

(def xml (capture-out (prxml [:p "Test"]))) 

que componen la función de captura de salida , pero sospecho algo así como que existe, solo estoy teniendo problemas para encontrarlo en la lista de correo API o correo.

Respuesta

6

Acabo de descubrir el sin de este great blog post que detalla el procesamiento XML en Clojure.

Así que la aplicación correcta de mi ejemplo es:

(def xml (with-out-str (prxml [:p "Test"]))) 
6

De manera más general, si nos fijamos en la fuente para with-out-str se puede ver cómo enlazar dinámicamente *out* a cualquier corriente usando binding. Esto funciona para establecer dinámicamente el valor de cualquier var.

Cuestiones relacionadas