我有一个存储在原子中的集合,就像这样
(def numbers (atom #{1 2 3 4 5}))
Run Code Online (Sandbox Code Playgroud)
使用swap!. 在一个单独的线程中,我想要一个函数,从集合中提取和删除偶数并返回它们。
我可以这样做的一种方法是:
(let [{even true odd false} (group-by even? @numbers)]
(reset! numbers odd)
even)
Run Code Online (Sandbox Code Playgroud)
但是,这不是原子操作。numbers可以在group-by和之间变化reset!。有没有办法以原子方式执行此操作?
clojure ×1