2013-03-04 1 views
5

Я попробовал этот код из this руководства:выхода посылается на консоль вместо РЕПЛ при использовании потоков в Затмении/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, как я могу это достичь?

ответ

6

Это потому, что *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")) 

 Смежные вопросы

  • Нет связанных вопросов^_^