一个新手问题:( Common Lisp)一次读取一行文件,然后通过击键移动到下一行.
有一个标准:
(let ((in (open "/some/file/name.txt" :if-does-not-exist nil)))
(when in
(loop for line = (read-line in nil)
while line do (format t "~a~%" line))
(close in)))
Run Code Online (Sandbox Code Playgroud)
在古老的Fortran中,我习惯于在wait某个地方运作(when in wait 'action...).
Clojure中有解决方案java.io.
但是JUST Common Lisp怎么样?
首先,应该总是使用
with-open-file而不是
open/ close.
接下来,ANSI CL标准没有指定i/o缓冲,因此 没有标准方法使CL对每次击键做出反应.但是,您可以要求您的用户点击Enter(或Return):
(with-open-file (in path)
(loop for line = (read-line in nil nil)
while line do
(read-line) ; wait for user to hit RET
(format t "--> ~A~%" line)))
Run Code Online (Sandbox Code Playgroud)