我正在尝试使用set!
来修改 var 的线程本地绑定——但这些更改似乎没有生效。考虑以下:
(def ^:dynamic *foo* :root)
(binding [*foo* :thread-local]
(let [val (doto :new
#(set! *foo* %))]
[val *foo*]))
我希望结果是[:new :new]
;相反,这评估为[:new :thread-local]
。我在这里有什么误解?
我正在尝试使用set!
来修改 var 的线程本地绑定——但这些更改似乎没有生效。考虑以下:
(def ^:dynamic *foo* :root)
(binding [*foo* :thread-local]
(let [val (doto :new
#(set! *foo* %))]
[val *foo*]))
我希望结果是[:new :new]
;相反,这评估为[:new :thread-local]
。我在这里有什么误解?