Вывод отправляется на консоль вместо REPL при использовании потоков в Eclipse/CounterClockWise
Я попробовал этот код из этого руководства:
(defn my-fn [ms]
(println "entered my-fn")
(Thread/sleep ms)
(println "leaving my-fn"))
(let [thread (Thread. #(my-fn 1))]
(.start thread)
(println "started thread")
(while (.isAlive thread)
(print ".")
(flush))
(println "thread stopped"))
Когда я выполняю его, часть вывода отображается в REPL, а другая часть отображается в консоли (которая появляется, поскольку я обычно скрываю ее, потому что я ее не использую).
Я хочу отправить весь вывод в окно REPL, как мне этого добиться?
1 ответ
Решение
Это потому что *out*
не связан с автором REPL в новой теме. Вы можете связать это вручную:
(let [thread (let [out *out*]
(Thread. #(binding [*out* out]
(my-fn 1))))]
(.start thread)
(println "started thread")
(while (.isAlive thread)
(print ".")
(flush))
(println "thread stopped"))