4

鉴于以下情况 -

  • 从终端模拟器上的lein replrepl-y)会话:

    (def reply-out *out*)

  • 然后从 Emacs 上的nrepl.el会话:

    (def nrepl-out *out*)

两个变量将具有不同的值,因为它们将在不同的目标上运行。

但是现在,如果我在 Emacs 中执行:

(binding [*out* reply-out] (println :foo))

该值将根据需要/预期打印在 Emacs 上而不是终端仿真器上。反之亦然。

如何将值从一个 repl 打印到另一个?

更新:在 Llinux 机器上使用 Emacs 24,用 xterm 和 gnome-terminal 测试。也尝试使用println每个PrintWriter对象的方法。

4

1 回答 1

0

这将打印到运行底层 Clojure 进程的 repl:

 (binding [*out* (clojure.java.io/writer System/out)]
     (println :bar))

虽然这不是一个灵活的解决方案,但我的问题的实际答案将非常受欢迎。

于 2013-01-26T17:33:39.833 回答