【发布时间】:2013-02-11 05:10:59
【问题描述】:
如何从 clj 文件中获取函数“print”输出到 REPL 的内容并将其全部放入文本文件中? 有没有办法创建一个新的空文本文件并将其与其他 clj 文件一起放在项目目录中并进行处理?
谢谢。
【问题讨论】:
标签: java clojure functional-programming
如何从 clj 文件中获取函数“print”输出到 REPL 的内容并将其全部放入文本文件中? 有没有办法创建一个新的空文本文件并将其与其他 clj 文件一起放在项目目录中并进行处理?
谢谢。
【问题讨论】:
标签: java clojure functional-programming
您可以通过重新绑定*out*来完成此操作
(binding [*out* (clojure.java.io/writer "foo.txt")]
(print "Hello World"))
(print "This does NOT go to the file") ;; outside the binding macro
运行后,应该有一个名为foo.txt 的文件,其中包含“Hello World”。
唯一需要注意的是,这种重新绑定只会影响在 binding 宏中评估的表单。
这会将*out* 重新绑定到文件写入器,并且不需要使用binding 宏。
(set! *out* (clojure.java.io/writer "foo.txt"))
(print "foo") ;; written to foo.txt
(print "bar") ;; written to foo.txt
我不确定重新设置此 var 是否会产生任何负面影响。 谨慎使用!
【讨论】:
println。
我知道这不是您正在寻找的,只是为了记录,您可以使用with-out-str 宏。
这会将输出评估为 string,您可以将其存储在文件中。
【讨论】: