我正在运行以下代码段:
(print "Enter something:")
(let [entry (read-line)]
(println "You entered" entry)
)
我希望看到以下类型的互动:
Enter something:abc
You entered abc
相反,我明白了:
abc
Enter something:You entered abc
为什么首先请求用户输入,即使打印首先出现在代码中?我尝试使用谷歌搜索,但据我所知,评估顺序应该是我期望来自Java / Python背景。这是代码的预期行为吗?
答案 0 :(得分:2)
将我的评论粘贴到一个真实的答案中。
Java在\n
上刷新stdout。如果你想要输出的话,你需要强制刷新缓冲区(一致读取,因为你无法控制它),就像你在你的例子中写的一样,或者你可以使用{{1}添加\n
}或(println ...)
。
请参阅:Will Java's System.out.print() buffer forever until println()?