要使用emacs筛选列表,应该使用remove-if函数。以下是remove-if:的文档
remove-if is an alias for `cl-remove-if' in `cl.el'.
(remove-if PREDICATE SEQ [KEYWORD VALUE]...)
Remove all items satisfying PREDICATE in SEQ.
This is a non-destructive function; it makes a copy of SEQ if necessary
to avoid corrupting the original SEQ.
Keywords supported: :key :count :start :end :from-end这里有一个remove-if不像我认为应该做的那样的例子:
(defvar states '( ('USA 'PA) ('USA 'VA) ('USA 'CA) ))
(remove-if (lambda (row) (not (equal (cadr row) 'CA))) states)我希望这应该返回('CA),但它没有。相反,它返回nil.
nil而不是('CA)谢谢你的帮助!
编辑:
我看到,如果我将states的定义更改为不引用条目,那么我已经写好了作品。
发布于 2014-07-06 02:34:49
不要把引号放进名单里。仅仅引用清单就足够了:
(defvar states '( (USA PA) (USA VA) (USA CA) ))这种情况下的返回值是:
((USA CA))https://stackoverflow.com/questions/24592159
复制相似问题