gpt4 book ai didi

parsing - 在 lisp 中指定要返回的值

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:27 26 4
gpt4 key购买 nike

我对 lisp 编程完全陌生。我需要为一个从 xml 文档中读取单词的类编写一个程序。不管怎样,我写了这个函数,它接受一个数组(word)和一个文件流(in)。我希望它循环直到到达流中的#\space,同时将每个收集到的字符添加到单词中。然后我想要返回这个词。我确定我做错了很多事情,但这是我的方法。我相当确定最后的返回函数完全不合适:

(defun get-string (in word)
(loop for char = (read-char in nil)
while (not (char= char #\space))
do(vector-push-extend char word))
(return word))

现在我有另一个问题。循环在找到一个空格后继续寻找字符,我得到了一堆 nils。另外,我需要停在换行符上,但我不确定该怎么做。我把它绑起来了,但它只会读取每个字符。

(defun get-string (in word)
(loop for char = (read-char in nil)
while (not (or (char= char #\space)
(char= char #\newline)))
do(print char))
word)

print char 在那里是因为我不太了解调试器,想看看我正在读取哪些字符。

最佳答案

word 是一个变量,一个变量计算出它的值。在 DEFUN 主体中,返回最后一个表达式的值。因此,如果您想返回 word 的值,则不需要围绕 word 返回。

关于parsing - 在 lisp 中指定要返回的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405658/

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