Как я могу напечатать PersistentHashMap в Clojure для строки? Как я могу напечатать PersistentHashMap в Clojure для строки? Я ищу что-то вроде: (str (pprint {... hash map here...}) который я могу передать как строку Ответ 1 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" Ответ 2 (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})) Ответ 3 Это должно помочь: (clojure.pprint/write {:a 1 :b 2} :stream nil) в соответствии с clojure.pprint/write документация Возвращает результат строки, если: поток равен нулю или нулю в противном случае. Ответ 4 (pr-str {:a 1 :b 2}) ;; => "{:a 1, :b 2}"
Ответ 1 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"
Ответ 2 (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}))
Ответ 3 Это должно помочь: (clojure.pprint/write {:a 1 :b 2} :stream nil) в соответствии с clojure.pprint/write документация Возвращает результат строки, если: поток равен нулю или нулю в противном случае.