在涉足 Clojure 时,我编写了一个非常基本的程序来回显用户输入的任何内容。然而,它并没有以我认为自然的方式运行。这是代码:
(defn goo []
(print "echo> ")
(def resp (read-line))
(print resp)
)
我希望代码像这样运行(对我来说foo
作为输入输入read-line
):
user=> (goo)
echo> foo
foonil
但取而代之的是, echo 和 read-line 被切换:
user=> (goo)
foo
echo> foonil
为什么会这样?有没有我错过的微妙之处?
编辑:根据乔的回答,更新后的正确解决方案是:
(defn goo []
(print "echo> ")
(flush)
(def resp (read-line))
(print resp)
(flush)
)
此外,如果您使用println
而不是print
.