我有這樣的情況:如何通過綁定來調用原始函數?
(defn a []
(do-something))
(defn b []
(let [original (a)]
(modify-original)))
(defn c []
(binding a b)
(a))
我如何 「破結合」,並在b
調用a
?我認爲,關閉能處理這樣的情況,所以我寫了這個類似的東西,但它沒有工作:
(defn c []
(let [original-a a
b (fn []
(let [original (original-a)]
(modify-original)))]
(b)))
哦,我差點忘了:代碼要複雜得多,因爲c
不直接調用b
。它被稱爲它的子功能,我不能改變。這就是爲什麼我不能用這樣的:
(defn ^:dynamic state [] (something))
爲了實現這個目標,我認爲「a」應該被聲明爲動態的。如果你真的想調用「a」的根值,那你爲什麼不能在綁定表單前複製a的值到另一個var,然後調用它。或者我想念你的用例? –