如何在打印Clojure数据时增加最大行长度

时间:2016-09-07 11:31:01

标签: clojure

我正在将内容写入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数据。

2 个答案:

答案 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*