gpt4 book ai didi

loops - 为什么在循环宏中有一个 = 符号用于从文件中读取行?

转载 作者:行者123 更新时间:2023-12-01 10:19:06 26 4
gpt4 key购买 nike

我已经陷入困境,试图弄清楚如何在 common-lisp 中处理读取文件,因为答案似乎总是完全相同,而且我不理解 lisp 的循环宏语法或其他相关内容。在下面的代码中(来自 this stackexchange answer for example,您会看到有一个“循环行 =(读取行)...”我不明白数字 = 符号在测试方面的含义。为什么是数字等号?read-line 返回什么数字?是 nil 和 T 数字吗?

(defun get-file (filename)
(with-open-file (stream filename)
(loop for line = (read-line stream nil)
while line
collect line)))

我一直直觉地认为“(loop for line in (read-line)...”会起作用,因为 read-line 返回一个字符串,但我猜想它实际上返回了值零,字符串只是它放在终端上的一些垃圾......但我不明白。有人有见解吗?还是解决这种疯狂的方法?

最佳答案

(

开始一个 Lisp 表单

循环

这是LOOP

for line = (read-line stream nil)

我们定义了一个局部变量 line 并且在每个 loop 迭代中它将被设置为 (read-line stream nil) 的结果.

(read-line stream nil) 以字符串形式返回一行,如果流位于 eof,则返回 nil

同时行

在每次迭代时检查它并在变量 line 不是 nil 时继续迭代

如果是nil则退出loop并返回结果。

收款行

对于每次迭代,将变量 line 的内容收集到一个列表中,稍后可以将其作为结果返回。

)

Lisp 形式结束

关于loops - 为什么在循环宏中有一个 = 符号用于从文件中读取行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57049944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com