我已经打了好几个小时,我正在尝试编写类似于unix命令的查找文件函数。它的长短归结为不理解为什么我不能从cl-fad中返回一个正确的值:walk-directory函数作为列表(cl-fad在这里http://weitz.de/cl-fad/)。
我正在尝试这样的事情:
(cl-fad:walk-directory "/tmp/" #'(lambda (file) (format nil "~a" file))))
但得到';没有来自REPL的价值。但是,以下代替'格式为零'......
(cl-fad:walk-directory "/tmp/" #'(lambda (file) (format t "~a" file)))
将/ tmp /目录(及以下)中的所有文件打印到STDOUT。但是我无法将该输出收集到列表中。
我尝试了以下但没有成功。
(loop for f in (cl-fad:walk-directory
"/tmp/"
#'(lambda (file) (format t "~a" file)))
collect (list f)))
答案 0 :(得分:3)
walk函数不会收集mapcar之类的返回值,它只是适用。您需要在某处保存输出,可能附加到全局列表或堆栈。
(let (files)
(cl-fad:walk-directory "/tmp/" #'(lambda (x) (push (namestring x) files)))
files)
请注意,namestring从路径对象转换为文件名。