我试图遍历给定目录并创建以.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)
Run Code Online (Sandbox Code Playgroud)
我想这样做而不使用外部变量(文件).在elisp中这样做的惯用方法是什么?
你最好的选择是使用'directory-files完整的界面,只需使用:
(directory-files directory t ".jpg$")
Run Code Online (Sandbox Code Playgroud)
更大的问题是如何避免顶级变量,这通常通过'let语句解决,例如
(defun jpg-list (directory)
(let ((files))
...do something with files...
files))
Run Code Online (Sandbox Code Playgroud)