我有一个“foreach”循环在一个列表中运行,并想要一个返回值的列表。但我似乎无法解决这个问题,我也不知道为什么。
首先,在循环之前,我创建了一个列表,其中有一个元素将在以后删除(如果有人告诉我如何摆脱这个添加并摆脱它,我将不胜感激)
然后,我运行循环,将结果附加到列表中。
在循环之后,我用没有第一个元素的列表的副本替换列表。
这是一个类似的代码,有相同的问题。我可能做错了什么。。。
- (defun c:testaforeach()
- (setq listappend (list 1 2 3 4 5));a list with elements to be appended
- (setq list1 (list 0)); starts the list
- (foreach e listappend
- (append list1 (list e)); appends a list containig just that element to the started one
- (print e)
- )
- (setq list1 (cdr list1)) ; get rid of the first element
- )
我得到的是一个零值。print命令会全部打印,但列表仍然为空
为什么“list1”不以“listappend”开始结束?
如果必要的话,我可以展示所有真实的代码,但我相信问题的核心是这里使用的语法。
编辑:已解决。这是语法。很抱歉在(有没有办法删除这个主题?)之后,我自己发了帖子并弄清楚了。。。
这是固定代码
- (defun c:testaforeach()
- (setq listappend (list 1 2 3 4 5));a list with elements to be appended
- (setq list1 (list 0)); starts the list
- (foreach e listappend
- (setq list1 (append list1 (list e))); appends a list containig just that element to the started one
- (print e)
- )
- (setq list1 (cdr list1)) ; get rid of the first element
- )
|