2
{:a 1}
のような単純なアトムを更新したいと思います。与えられたキーが既に存在する場合にのみswap!
のように新しい値を返します。そうでなければnilを返します。原子と条件付きのマップ更新
これは、私は考え出した最も簡単な解決策です:
(defn cond-assoc [store k v]
(when (get @store k)
(swap! store assoc k v)))
が、私はそれが本当にアトミックだ感じることはありません。野生のものでは、(get @store k)
とswap!
の間で何かが起こることがあります。そこより良い解決策はありますか?