首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用elisp删除-if过滤列表

使用elisp删除-if过滤列表
EN

Stack Overflow用户
提问于 2014-07-06 02:21:04
回答 1查看 2.8K关注 0票数 1

要使用emacs筛选列表,应该使用remove-if函数。以下是remove-if:的文档

代码语言:javascript
复制
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不像我认为应该做的那样的例子:

代码语言:javascript
复制
(defvar states '( ('USA 'PA) ('USA 'VA) ('USA 'CA) ))
(remove-if (lambda (row) (not (equal (cadr row) 'CA))) states)

我希望这应该返回('CA),但它没有。相反,它返回nil.

  1. 为什么上面的示例返回nil而不是('CA)

谢谢你的帮助!

编辑:

我看到,如果我将states的定义更改为不引用条目,那么我已经写好了作品。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-06 02:34:49

不要把引号放进名单里。仅仅引用清单就足够了:

代码语言:javascript
复制
(defvar states '( (USA PA) (USA VA) (USA CA) ))

这种情况下的返回值是:

代码语言:javascript
复制
((USA CA))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24592159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档