删除文件名(如果它已在列表中)

时间:2015-06-10 17:21:55

标签: scheme racket

我正在尝试从列表中删除项目(文件名),我没有做任何工作,没有从文档中删除功能,没有来自这个网站..这是我的代码:

#lang racket

(define file-collection '())

(for ([f (directory-list)] #:when (regexp-match? "\\.log$" f))  
  (set! file-collection (foldr cons (list f) file-collection)))

(define (check-file file-in) 
  (for/list ([i (file->lines file-in)]) 
  (cond ((equal? i "[robot warrior]") (remove file-in file-collection) ))))

(for ([i file-collection])(check-file i))

仍然,无论我尝试什么,文件收集保持不变,所有文件都包含在集合中..但是,如果我使用displayln文件输入,只显示没有[机器人战士]的文件,那是完美,这就是我需要的,但我需要以某种方式存储它。我发现它拒绝工作非常奇怪/奇怪。

1 个答案:

答案 0 :(得分:1)

以下是从列表中删除某些文件的两种方法。

#lang racket

(define all-files '("file1" "file2" "file3" "file4"))

(for/list ([file all-files]
           #:unless (equal? file "file2"))
  file)

(filter (lambda (file) (not (equal? file "file2")))
        all-files)

结果是:

'("file1" "file3" "file4")
'("file1" "file3" "file4")

请注意,for/listfilter而不是从现有列表中删除元素会产生具有相同元素的新列表(在这种情况下省略“file2”)。