相关疑难解决方法(0)

Clojure - 发生故障的副作用

在涉及Clojure时,我已经编写了一个非常基本的程序来回应用户输入的内容.然而,它并没有以我认为自然的方式运行.这是代码:

(defn goo []
  (print "echo> ")
  (def resp (read-line))
  (print resp)
)
Run Code Online (Sandbox Code Playgroud)

我希望代码能够像这样运行(对我来说输入foo为输入read-line):

user=> (goo)
echo> foo
foonil
Run Code Online (Sandbox Code Playgroud)

但相反,回声和读取线被切换:

user=> (goo)
foo
echo> foonil
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我缺少一个微妙的东西吗?

编辑:从Joe的回答,更新的正确解决方案是:

(defn goo []
  (print "echo> ")
  (flush)
  (def resp (read-line))
  (print resp)
  (flush)
)
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用println而不是冲洗,则不需要冲洗print.

clojure

13
推荐指数
2
解决办法
1584
查看次数

标签 统计

clojure ×1