如果我嘗試在emacs cider-repl中評估以下代碼,則按預期方式返回nil,但打印不會發生在repl緩衝區或控制檯中。我如何按預期打印此打印件?爲什麼我不能從Emacs的Clojure Cider REPL的後臺線程打印?
(dotimes [i 5]
(.start
(Thread.
(fn []
(Thread/sleep (rand 500))
(println (format "Finished %d on %s" i (Thread/currentThread)))))))
;=> nil
這工作得很好,但是:
(println (format "Finished 1 on %s" (Thread/currentThread)))
;=> Finished 1 on Thread[nREPL-worker-18,5,main]
----------- mini-buffer -----------------
nil
非常感謝!這解決了這個謎,你只是教了我一些關於Clojure和Emacs的東西。有什麼辦法可以重新綁定後臺線程的* out *變量來打印出repl緩衝區嗎? – kurofune 2014-11-04 20:16:44
'* out *'可以使用'binding'來設置,就像任何其他的動態變量一樣。 @ amalloy的答案在展示我認爲的那部分方面做得很好。 – noisesmith 2014-11-04 20:29:25
對。你們倆都很清楚地解決了我的問題。謝謝。 – kurofune 2014-11-04 20:35:03