我正在尋找一種方法來將我的幫助程序函數保留在文件底部,而無需將它們全部聲明在頂部。使用clojure自動聲明幫助程序函數
一個解決方案應該是編寫一個「declare-helpers」函數,通過在當前文件中通過defn-macro創建所有函數的名稱並將其包裝在一個聲明調用中。
這裏我問的是更好的方法來抓住這些名字。
*編輯*
我知道這是不好的做法,但是,下面的代碼似乎做我想做
注意,它僅適用於助手的功能與「dehfn」宏觀
定義;define helper function
(defmacro dehfn [name & body]
`(defn- ~name [email protected]))
(defmacro declare-helpers []
`(declare [email protected](map symbol
(re-seq #"(?<=dehfn\s)[a-zA-Z+!\-_?0-9*~#@''`/.$=]*(?=\s)"
(slurp (str "src/" *file*))))))
現在,你可以這樣做:
(declare-helpers)
(defn hello-user [name] (greet name))
(dehfn greet [name] (str "Hello my dear " name))
你爲什麼要這麼做?在底部使用的頂部寫入功能對於可讀性來說是一個直接的勝利。畢竟,人們仍然從上到下閱讀代碼。僅僅因爲函數不暴露API或不公開ns,它們並非不那麼重要,甚至可能更重要,因爲它們是讀者在打開源文件時感興趣的重要部分。 –