首先请注意这是一个家庭作业问题,所以我不是在寻找直接的代码或类似的东西,只是为了帮助我的逻辑。
作业在DrRacket中。问题是:
给定一个FileSystem,我们将其定义为具有两个字段的名称和内容的结构,其中contents是目录或文件的列表;编写一个函数,为目录中的每个文件创建一个“.bak”文件名,并将其放在文件后面。
我完全迷失了。我的逻辑如下:如果内容列表中的第一件事是文件,只需用该文件重新创建目录,并附加一个附加“.bak”的新文件。这是我能得到的 - 如果有一个子目录,我看不出如何解决问题,或者如何进一步向下移动。
这是我残暴的代码:
(define (backup my-fs)
(cond
[(empty? (dir-contents my-fs)) empty]
[(file? (first (dir-contents my-fs))) (make-dir (dir-name my-fs) (append (backup-list (first (dir-contents my-fs)))(rest (dir-contents my-fs))))]
[(dir? (first (dir-contents my-fs))) (backup (first (dir-contents my-fs)))]))
任何人都可以帮我解释一下吗?
答案 0 :(得分:2)
contents
的{{1}}部分是包含文件或目录的列表(包含....的列表)。
这是一个基本的树遍历问题,你有三种情况,如你所说:
然后你需要为每个案件采取行动:
例如:
FileSystem
答案 1 :(得分:1)
您需要澄清数据定义。你写道:
“给定一个FileSystem,我们将其定义为具有两个字段,名称和内容的结构,其中contents是目录或文件的列表;编写一个函数,为每个文件创建一个”.bak“文件名在目录中并将其放在文件后面。“
这清楚地说明了文件系统是什么......如果你知道“目录”和“文件”是什么。您需要通过编写“directory”和“file”的数据定义来澄清这一点。每一个都应该是一个单独的句子。它们可能非常简单,例如“文件表示为字符串”。
执行此操作后,请编写一些FileSystems示例。