如何在do语句中正确使用Clojure的读取线?

时间:2017-12-09 23:46:13

标签: clojure io

我对以下行为感到困惑:

(do (println "Say hi.") (println (read-line)))

我希望这条消息"打个招呼。"在程序阻塞并等待输入之前出现在控制台中。相反,程序立即阻止,只输出"打个招呼。" 用户回复后。这里发生了什么以及该程序如何正确编写?

2 个答案:

答案 0 :(得分:2)

如果您查看println的来源,就会看到它调用prn。当您查看prn的来源时,当*out*绑定为true时,您会看到它在换行符上刷新*flush-on-newline*

您的REPL中*flush-on-newline*的价值是多少?

答案 1 :(得分:1)

这可能是一个缓冲问题。尝试在readline调用之前发出(flush)。