我正在将内容写入edn
文件,并希望这些行的最大宽度大于当前默认值:
(use 'clojure.pprint)
nil
user=> *print-right-margin*
72
这似乎与我目前得到的输出一致。但是如何增加默认值?
这是我用来写出edn
文件的函数:
(defn pp-str [x] (-> x clojure.pprint/pprint with-out-str))
使用示例:
(spit "foo.edn" (u/pp-str foo))
foo
可能是某些打嗝或其他Clojure数据。
答案 0 :(得分:1)
尝试在*print-right-margin*
函数之外重新绑定pp-str
:
(binding [*print-right-margin* 1000]
(spit "foo.edn" (u/pp-str foo)))
或从里面:
(defn pp-str [x]
(binding [*print-right-margin* 1000]
(-> x clojure.pprint/pprint with-out-str))))
这会暂时重新定义封闭块范围的值。这应该有帮助
答案 1 :(得分:1)
请注意*print-right-margin
的文档中它是'动态变量'。这意味着您可以使用binding
为当前线程临时更改它。
(binding [*print-right-margin* 42]
(pprint my-great-data))
动态变量通常遵循*var*
命名约定。其他示例包括*out*
和*err*
。