我正在尝试使用 set!
修改 var 的线程本地绑定(bind) - 但这些更改似乎没有生效。考虑以下因素:
(def ^:dynamic *foo* :root)
(binding [*foo* :thread-local]
(let [val (doto :new
#(set! *foo* %))]
[val *foo*]))
我希望结果是[:new :new]
;相反,其计算结果为[:new :thread-local]
。我在这里误解了什么?
最佳答案
您的 doto
语法错误。
(binding [*foo* :thread-local]
(let [val (doto :new (#(set! *foo* %)))]
[val *foo*]))
注意额外的括号。
关于clojure - Clojure 中线程本地绑定(bind)的更新通过 set 完成!没有发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11046246/