EDA365电子工程师网
标题:
[求助] skill是否不能正常使用递归?
[打印本页]
作者:
leilei4908
时间:
2017-7-31 14:09
标题:
[求助] skill是否不能正常使用递归?
本帖最后由 leilei4908 于 2017-7-31 15:45 编辑
procedure(getFiles(@optional (path ".") (files nil) (Sub nil))
prog(()
unless(isDir(path) return(files))
foreach(obj getDirFiles(path)
when(Sub && obj != "." && obj != ".."
when(isDir(obj) files = getFiles(obj files Sub))
)
; when(isFile(obj) files = cons(simplifyFilename(obj) files))
when(isFile(obj) files = cons(obj files))
)
return(files)
))
复制代码
大神帮我看下这个哪里有错误
代码目的是利用递归,获取所有文件夹及子文件夹内的文件
这个只能获取到第一级文件夹内的文件,不能获取子文件夹的
上面的错误主要是:
1.子文件夹的文件名不能通过isFile判断文件是否存在
2.simplifyFilename不能将子文件夹扩展成完整路径
procedure(getFiles(@optional (path ".") (files nil) (Sub nil))
let((objs obj)
path = simplifyFilename(path)
objs = isDir(path) && getDirFiles(path) || nil
foreach(obj objs
fullpath = strcat(path "\\" obj)
when(Sub && isDir(fullpath)
when(obj != "." && obj != ".." files = getFiles(fullpath files Sub))
)
when(isFile(fullpath) files = cons(fullpath files))
)
files
))
复制代码
这个能解决上面的问题,但是不知道为什么,获取的文件有重复项
欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/)
Powered by Discuz! X3.2