在SLIME中执行此操作并想知道为什么在输出read
之前它等待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
答案 0 :(得分:3)
这是因为标准输出流被缓冲,这意味着打印到它的东西实际上并不会立即写入显示。您需要在每个实例中(finish-output)
之前调用(read)
,以确保首先写入已缓冲的内容。