(tree-seq branch? children root)
返回一个惰性序列, 序列里包含通过深度优先遍历得出的一棵树中的所有节点。
branch?
函数接受一个参数,
通过向它传入一个节点,可以判断该节点是否拥有子节点。
children
函数接受一个参数,
通过向它传入一个节点,可以得到一个包含该节点的所有子节点的序列。
children
函数只会在那些
branch?
函数返回 true
的节点被调用。
root
是树的根节点。
; 函数 file-seq 用于列出一个文件夹的整个目录树
; 它是展示 tree-seq 用法的一个极好的例子
(defn file-seq
[dir]
(tree-seq
(fn [^java.io.File f] (. f (isDirectory))) ; 检查文件 f 是不是一个文件夹
(fn [^java.io.File d] (seq (. d (listFiles)))) ; 如果是的话,就用 listFiles 方法遍历它
dir)) ; 树的根节点是传入的文件夹