我有这样的情况:
(defn a []
(do-something))
(defn b []
(let [original (a)]
(modify-original)))
(defn c []
(binding a b)
(a))
我怎样才能“打破绑定”并a
打电话b
?我认为闭包可以处理这种情况,所以我写了一些与此类似的东西,但它没有用:
(defn c []
(let [original-a a
b (fn []
(let [original (original-a)]
(modify-original)))]
(b)))
哦,我差点忘了:代码要复杂得多,因为c
不直接调用b
. 它在我无法更改的子函数中调用。这就是为什么我不能使用类似的东西:
(defn ^:dynamic state [] (something))