Как я могу довольно напечатать PersistentHashMap в Clojure в строку? - PullRequest
28 голосов
/ 29 декабря 2010

Как я могу довольно напечатать PersistentHashMap в Clojure в строку?Я ищу что-то вроде:

(str (pprint {... hash map here...})

, которое я могу передать как String

Ответы [ 4 ]

43 голосов
/ 29 декабря 2010
(let [s (java.io.StringWriter.)]
  (binding [*out* s]
    (clojure.pprint/pprint {:a 10 :b 20}))
  (.toString s))

Редактировать: Эквивалентная краткая версия:

(with-out-str (clojure.pprint/pprint {:a 10 :b 20}))
17 голосов
/ 12 августа 2015

Это должно помочь:

(clojure.pprint/write {:a 1 :b 2} :stream nil)

в соответствии с clojure.pprint / write документация

Возвращает строковый результат, если: stream равен nil или nilв противном случае.

15 голосов
/ 29 декабря 2010
user=> (import java.io.StringWriter)
java.io.StringWriter
user=> (use '[clojure.pprint :only (pprint)])
nil
user=> (defn hashmap-to-string [m] 
  (let [w (StringWriter.)] (pprint m w)(.toString w)))
#'user/hashmap-to-string
user=> (hashmap-to-string {:a 1 :b 2})
"{:a 1, :b 2}\n"
9 голосов
/ 29 декабря 2010
(pr-str {:a 1 :b 2}) ;; => "{:a 1, :b 2}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...