4

私の clojure ファイルの先頭には、一連の定義があります。そのうちのいくつかは踏み台の定義にすぎません。つまり、ファイルのさらに下で使用することを意図していません。いえ

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最初の使い捨て定義の代わりに使用し、残りの呼び出しを 内にdefネストします。deflet

(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た後、ローカル バインディングの値は破棄され、プログラムの残りの部分からアクセスできるのはとvars だけです。letlib-folderdist-folder

于 2013-02-12T19:21:37.577 に答える
4

それらがdefns(つまり関数)である場合は、単にdefn-プライベート関数を作成するために使用できます。

sの場合def、明示的にプライベートとして設定する必要があります。

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