4

在我的clojure 文件的开头,我有一系列的defs,其中一些只是垫脚石defs,即不打算在文件的后面进一步使用。IE

def src-folder (File. "src")
def lib-folder (File. src-folder "lib")
def dist-folder (File. src-folder "bin") 
;; I only care for the lib-folder and dist-folder beyond this point

在 Clojure 中这样做的正确方法是什么?

4

2 回答 2

5

在第一个一次性定义中使用let而不是,并将剩余的调用嵌套在:defdeflet

(let [root-dir (File. "projects/my-project")
      src-folder (File. root-dir "src")]
  (def lib-folder (File. src-folder "lib"))
  (def dist-folder (File. src-folder "bin")))

src-folder评估后,本地绑定的值将被丢弃let,只留下lib-folderdist-foldervar 可供程序的其余部分访问。

于 2013-02-12T19:21:37.577 回答
4

如果它们是defns(即函数),您可以简单地使用defn-它们来创建私有函数。

对于defs 你必须明确地将它们设置为私有:

(def ^:private src-folder (File. "src"))
于 2013-02-12T19:22:42.090 回答