使用单个值更新原子

mik*_*era 5 concurrency atomic clojure

我的代码中有许多原子,其中一个常见的要求是将它们更新为新值,而不管当前值如何.

因此,我发现自己写的是这样的:

(swap! atom-name (fn [_] (identity new-value)))
Run Code Online (Sandbox Code Playgroud)

这可行,但看起来很丑陋,可能会导致构造匿名闭包的性能损失.

有没有更好的办法?

Pat*_*ace 8

reset!功能应该这样做.

(reset! atom-name new-value)
Run Code Online (Sandbox Code Playgroud)