【发布时间】:2014-11-29 07:37:29
【问题描述】:
我有一个递归函数(来自 github):
(defn delete-recursively [fname]
(let [func (fn [func f]
(when (.isDirectory f)
(doseq [f2 (.listFiles f)]
(func func f2)))
(clojure.java.io/delete-file f))]
(func func (clojure.java.io/file fname))))
我无法弄清楚这个func 的事情。我需要帮助:)
为什么可以用同一个符号func表示
- 函数绑定的名称,
-
fn形式的参数名称, - 被调用的函数和
- 调用的第一个参数?
还是发生了其他事情?
【问题讨论】:
-
当我看到这段代码时,我对符号
func的双重出现有类似的疑问,最终意识到它只是将线程func作为促进递归的参数。也许一个有效的问题是这样的:“有没有更清晰、更容易理解的方式来编写这段代码?”