该println
函数写入STDOUT
.我们怎样才能写信息STDERR
呢?
(println "Hello, STDOUT!")
Run Code Online (Sandbox Code Playgroud)
Dre*_*kes 26
没有特定的功能,但是您可以动态重新绑定保存println
写入的流的var ,如下所示:
(println "Hello, STDOUT!")
(binding [*out* *err*]
(println "Hello, STDERR!"))
Run Code Online (Sandbox Code Playgroud)
在我的REPL中,颜色表示流(红色是STDERR):
mat*_*ore 14
简单的Java方法工作正常,Clojure新手很容易理解:
(.println *err* "Hello, STDERR!")
Run Code Online (Sandbox Code Playgroud)
另一种选择,只是为了好玩,是clojure.java.io/copy
:
(require '[clojure.java.io :as cjio])
(cjio/copy "Hello, STDERR!\n" *err*)
(.flush *err*)
Run Code Online (Sandbox Code Playgroud)