1
我想遍歷給定的目錄並創建一個以.jpg結尾的文件列表。遍歷目錄樹
(setq files (list))
(defun jpg-list(directory)
(dolist (node (directory-files directory t))
(if (file-directory-p node)
(if (not
(string= (substring node (- (string-width node) 1)) "."))
(jpg-list node))
(if (string-match ".jpg" node)
(setq files (cons node files)))))
files)
我想這樣做,而不使用外部變量(文件)。在elisp中做這件事的慣用方式是什麼?
感謝,這解決了我的問題。但是對於不同的情況,編寫這種循環的習慣方式是什麼?使用setq遍佈各處似乎沒有功能代碼? – 2009-09-24 19:54:21
如果你想要一個更「功能性」的方法,你可能想用lambda表示你的(目錄文件)mapcar,它遞歸地調用你的函數在subdirs上。 – aaron 2009-09-24 21:58:57
對,mapcar功能更強大,但並沒有解決他的問題。你需要像'remove-if','remove'等''cl'中的例程,這完全取決於你在做什麼。慣用的方式是完全使用「目錄文件」。接下來的方法是通過「let」使用局部變量,你可以編寫一個遞歸例程,使用''cl'函數等等等等。注意:Emacs不起作用,它是充滿了各種各樣的副作用... – 2009-09-24 22:48:19