首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除-如果-不-不具有多个条件

删除-如果-不-不具有多个条件
EN

Stack Overflow用户
提问于 2021-03-14 09:52:06
回答 1查看 144关注 0票数 1

我想找到以.jpg、.png或.jpeg结尾的所有文件。我写了这样的东西:

代码语言:javascript
复制
(defun get-picture (dir)
  (remove-if-not (lambda (item)
           (or (string= ".jpg" (pathname-type item))
               (string= ".png" (pathname-type item))
               (string= ".jpeg" (pathname-type item))))
         (uiop:directory-files dir)))

但在我看来不太好。例如,当您想要搜索更多。所以我写了这个:

代码语言:javascript
复制
(defun search-file (dir file-types)
  (remove-if-not (lambda (item)
           (mapc (lambda (type)
               (string= type (pathname-type item)))
             file-types))
         (uiop:directory-files dir)))

但是很明显,mapc在这里是不正确的。所以我想知道是否有更好的做法(除了玩偶)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-14 10:10:23

代码语言:javascript
复制
(defun get-picture-files (d &key
                            (extensions '("jpg" "png" "jpeg"))
                            (test #'string-equal))
  (remove-if (lambda (p)
               (not (member (pathname-type p)
                            extensions
                            :test test)))
             (uiop:directory-files d)))

extensions;

  • and

  • 允许您指定测试(因此,"GOO.JPG");

  • calls pathname-type只使用一次;

  • 不使用不推荐的remove-if-not

)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66623074

复制
相关文章

相似问题

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