我对以下行为感到困惑:
(do (println "Say hi.") (println (read-line)))
我希望这条消息"打个招呼。"在程序阻塞并等待输入之前出现在控制台中。相反,程序立即阻止,只输出"打个招呼。" 在用户回复后。这里发生了什么以及该程序如何正确编写?
答案 0 :(得分:2)
如果您查看println
的来源,就会看到它调用prn
。当您查看prn
的来源时,当*out*
绑定为true时,您会看到它在换行符上刷新*flush-on-newline*
。
您的REPL中*flush-on-newline*
的价值是多少?
答案 1 :(得分:1)
这可能是一个缓冲问题。尝试在readline调用之前发出(flush)。