Common lisp 逐行读取文件,等待键盘输入读取下一行
一个新手问题:CommonLisp一次读取一行文件,然后通过击键移动到下一行 有一个标准:Common lisp 逐行读取文件,等待键盘输入读取下一行,common-lisp,Common Lisp,一个新手问题:CommonLisp一次读取一行文件,然后通过击键移动到下一行 有一个标准: (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))) 在旧的Fortran中,我习惯了等待函数,它在等待
(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)))
在旧的Fortran中,我习惯了等待函数,它在等待时会在某处起作用
Clojure中有通过java.io实现的解决方案
但是普通的Lisp呢?首先,应该始终使用
而不是
/
接下来,ANSI CL标准没有指定i/o缓冲,因此
没有标准方法使CL对每次击键作出反应。
但是,您可以要求用户按Enter键或Return键:
附带问题:如果我们在某些CL中没有缓冲,但在其他标准中没有缓冲,我们是否能够对输入做出反应而不打印该输入?@RainerJoswig:如果你有一个兄弟,他会喜欢土豆吗-非常感谢你。不同语言之间的i/o内容差别很大,因此这确实非常重要。
(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)))