在hashmap中切换布尔值

时间:2019-03-27 04:27:09

标签: clojurescript

以下方法有效,但感觉/似乎错误。有更好的方法吗?

dev:cljs.user=> (def x (atom {:v true}))
#'cljs.user/x
dev:cljs.user=> (swap! x assoc-in [:v] (not (:v @x)))
{:v false}
dev:cljs.user=> (swap! x assoc-in [:v] (not (:v @x)))
{:v true}

2 个答案:

答案 0 :(得分:2)

cljs.user=> (def x (atom {:v true}))
#'cljs.user/x
cljs.user=> (swap! x update :v not)
{:v false}
cljs.user=> @x
{:v false}

答案 1 :(得分:1)

(let [a (atom {:v true})]
    (swap! a update-in [:v] not)
    @a)
=> {:v false}

或者您可以使用幽灵:

(transform [ATOM :v] not a)