在Emacs Lisp中,有一个add-to-list
函数可以将单个元素添加到列表中(如果该元素不存在)。
与其添加一个元素,我想要添加多个元素。另外,我不想过滤掉重复的元素,而是仍然将它们添加到列表中。
目前,我已经实现了以下函数:
(defun append-to-list (list-var elements)
"Append ELEMENTS to the end of LIST-VAR.
The return value is the new value of LIST-VAR."
(set list-var (append (symbol-value list-var) elements)))
这个函数做了我想要的事情,但我想知道在Emacs lisp中是否已经有类似的(或更好的)东西存在。我不想重复造轮子。
更新1: Stefan指出下面的代码无法使用词法作用域。有没有办法让它正常工作?
更新2:之前我认为重复过滤是可以的,但实际上不行。我确实需要重复项。
symbol-value
和set
意味着它不能与词法作用域变量一起使用。除非你真的需要它,最好在开头添加elements
,因为elements
几乎总是比list-var
短(有时甚至短得多)。 - Stefan