Clojure系列defs但不暴露于外部范围所有这些

Mar*_*tus 4 clojure

在我的clojure文件的头部,我有一系列的defs,其中一些只是踩踏石头的defs,即不打算在文件中进一步使用.即

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
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*lex 5

使用let而不是def第一个抛弃定义,并将剩余的def调用嵌套在let:

(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")))
Run Code Online (Sandbox Code Playgroud)

在评估之后,将src-folder丢弃本地绑定的let值,只允许其他程序访问lib-folderdist-foldervars.