我在Java
中使用了Clojure
库。它使用System.out.println
直接向控制台输出许多内容。
我正在使用最新的Cider和Emacs。我正在用cider-jack-in
开始Cider。但是,我可以看到这些输出。我以为它们会被复制到 nrepl-server 缓冲区,但事实并非如此。
我还尝试在REPL中运行(alter-var-root #'*out* (constantly *out*))
,但没有成功。
如果可以完成,我在如何做到这一点上缺少什么。
答案 0 :(得分:1)
您需要将分配给ages = [10,23,13,18,12]
的{{1}}替换为将所有内容转发给java.io.PrintStream
(System.out
的实例)的clojure.core/*out*
。为此,您必须创建从java.io.PrintWriter
到PrintStream
的适配器。我没有在Java SDK API中找到现有的,但在Apache Commons IO中有一个(或者您可以自己实现):
PrintWriter
从现在开始,当您在JVM中的任何地方调用(import (java.io PrintStream)
(org.apache.commons.io.output WriterOutputStream))
(-> *out*
(WriterOutputStream.)
(PrintStream.)
(System/setOut))
时,输出将传递给System.out.println
。