被普通 lisp 中的文件结束条件弄糊涂了

1.6*_*618 2 lisp common-lisp

无法读取文本文件。

阅读:输入流 #1=# 已到达结束 [SYSTEM::SIMPLE-END-OF-FILE 类型的条件]

什么意思是“已经到了尽头”。

Jor*_*jon 5

查看 HyperSpec 上的文档:

http://www.lispworks.com/documentation/HyperSpec/Body/f_rd_rd.htm

默认情况下,当没有更多数据要从流中读取时READREAD-CHAR、 和类似函数将发出类型条件信号END-OF-FILE

如果您希望它在尝试读取流的末尾时返回特定值,则需要将 a 传递nileof-error-p函数的参数,并将值、符号或关键字传递给eof-value函数的参数;这是到达文件/流末尾时您将返回的数据。

例如,如果您从一段文本中单独读取字符:

(with-open-file (s somefile :direction :input)
  (do ((c (read-char s nil :eof)
          (read-char s nil :eof)))
    ((eql c :eof) 'done)
    (process-char c)))
Run Code Online (Sandbox Code Playgroud)