在涉及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 ×1