dea*_*ost 1 lisp sbcl common-lisp slime
read在 SLIME 中运行这个并想知道为什么它在输出之前等待输入format。
(defun wage ()
(format t "~&Enter wage: ")
(let ((wage (read)))
(format t "~&Enter hours: ")
(let ((hours (read)))
(format t "~&Earned ~S dollars." (* wage hours)))))
* (wage)
2
Enter wage:
3
Enter hours:
Earned 6 dollars.
NIL
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为标准输出流是缓冲的,这意味着打印到标准输出流的内容实际上不会立即写入显示。您需要在每个实例中调用(finish-output)before(read)以确保首先写入已缓冲的任何内容。