Wenn ich versuche, den folgenden Code in meinem Emacs Cider-Repl abzuwerten, wird wie erwartet nil zurückgegeben, aber keiner der Ausdrucke findet im Repl-Puffer oder in der Konsole statt. Wie kann ich diesen Ausdruck wie gewünscht erstellen?Warum kann ich nicht aus Hintergrundthreads in Clojure Cider REPL in Emacs drucken?
(dotimes [i 5]
(.start
(Thread.
(fn []
(Thread/sleep (rand 500))
(println (format "Finished %d on %s" i (Thread/currentThread)))))))
;=> nil
Dies funktioniert gut, aber:
(println (format "Finished 1 on %s" (Thread/currentThread)))
;=> Finished 1 on Thread[nREPL-worker-18,5,main]
----------- mini-buffer -----------------
nil
Sie so viel Dank! Das löst das Geheimnis und du hast mir gerade etwas über Clojure und Emacs beigebracht.Gibt es eine Möglichkeit, die Variable * out * für Hintergrund-Threads neu zu binden, um sie auch im Repl-Puffer auszudrucken? – kurofune
'* out *' kann mit 'binding' gesetzt werden, wie jede andere dynamische Variable auch. @ Amalloys Antwort macht einen guten Job, diesen Teil zu zeigen, denke ich. – noisesmith
direkt an. Ihr beide habt das sehr klar für mich gelöst. Vielen Dank. – kurofune