虽然涉足Clojure,但我写了一个非常基本的程序来回应用户输入的任何内容。然而,它不会以我认为是自然的方式运行。下面的代码:Clojure - 副作用发生故障
(defn goo []
(print "echo> ")
(def resp (read-line))
(print resp)
)
我希望代码可以这样运行了(对我来说在foo
作为输入到read-line
打字):
user=> (goo)
echo> foo
foonil
而是回声和读线切换:
user=> (goo)
foo
echo> foonil
为什么会发生这种情况?我错过了一个微妙的东西吗?
编辑:从乔的回答,更新的正确的解决办法是:
(defn goo []
(print "echo> ")
(flush)
(def resp (read-line))
(print resp)
(flush)
)
此外,冲洗是没有必要的,如果你使用println
而不是print
。
这做到了!打印完成后添加(刷新)。感谢您及时的回复! – 2008-12-23 03:10:02