clojurereplの次のコードシーケンスを検討してください
(def elems (atom {}))
(swap! elems assoc 42 [:a 7])
elems
期待されるものを生み出す{42 [:a 7]}
。今すぐお試しください
(compare-and-set! elems elems (atom {}))
生成します。これは、操作が成功しなかったことfalse
を意味します。操作の内部と同じようにテストするcompare-and-set!
ことを期待していたので、私は驚いています。アトムを無条件にリセットするという目標を達成するために使用できることは知っていますが、なぜまったく同じことをしないのか知りたいのですが。elems
elems
compare-and-set!
reset!
compare-and-set!