【发布时间】:2011-12-06 19:31:22
【问题描述】:
我对 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))
现在我有另一个问题。循环在找到空格后继续寻找字符,我得到了一堆 nil。另外,我需要在换行符上停下来,但不知道该怎么做。我绑定了这个,但它只读取每个字符。
(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)
打印字符在那里,因为我不太擅长理解调试器并且想看看我正在阅读什么字符。
【问题讨论】: