找回密码
 注册
关于网站域名变更的通知
查看: 357|回复: 0
打印 上一主题 下一主题

[求助] skill是否不能正常使用递归?

[复制链接]
  • TA的每日心情
    开心
    2022-5-6 15:29
  • 签到天数: 34 天

    [LV.5]常住居民I

    跳转到指定楼层
    1#
    发表于 2017-7-31 14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 leilei4908 于 2017-7-31 15:45 编辑
    1. procedure(getFiles(@optional (path ".") (files nil) (Sub nil))
    2. prog(()
    3.    unless(isDir(path) return(files))
    4.    foreach(obj getDiRFiles(path)
    5.       when(Sub && obj != "." && obj != ".."
    6.          when(isDir(obj) files = getFiles(obj files Sub))
    7.       )
    8.       ; when(isFile(obj) files = cons(simplifyFilename(obj) files))
    9.       when(isFile(obj) files = cons(obj files))
    10.    )
    11.    return(files)
    12. ))
    复制代码

    大神帮我看下这个哪里有错误
    代码目的是利用递归,获取所有文件夹及子文件夹内的文件

    这个只能获取到第一级文件夹内的文件,不能获取子文件夹的

    上面的错误主要是:
    1.子文件夹的文件名不能通过isFile判断文件是否存在
    2.simplifyFilename不能将子文件夹扩展成完整路径


    1. procedure(getFiles(@optional (path ".") (files nil) (Sub nil))
    2. let((objs obj)
    3.    path = simplifyFilename(path)
    4.    objs = isDir(path) && getDirFiles(path) || nil
    5.    foreach(obj objs
    6.       fullpath = strcat(path "\\" obj)
    7.       when(Sub && isDir(fullpath)
    8.          when(obj != "." && obj != ".." files = getFiles(fullpath files Sub))
    9.       )
    10.       when(isFile(fullpath) files = cons(fullpath files))
    11.    )
    12.    files
    13. ))
    复制代码

    这个能解决上面的问题,但是不知道为什么,获取的文件有重复项


    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-17 08:24 , Processed in 0.078125 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表