我对 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
返回。
我是一名优秀的程序员,十分优秀!