我有这样的情况:如何通过绑定来调用原始函数?
(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,然后调用它。或者我想念你的用例? –