繁体   English   中英

Clojure更新了两个键和两个功能

[英]Clojure update-in on two keys and two functions

我正在尝试使用update-in功能来更新嵌套的哈希图。 但是我想使用differents函数更新两个键的值。 举个例子:

我有这个哈希:

{:1 {:value 0, :active false}, :2 {:value 0, :active false}

我想将密钥:1更新为:

{:1 {:value 2, :active true}, :2 {:value 0, :active false}

有什么方法可以做到这一点?

提前致谢

更新也许我只可以使用assoc(assoc my-map :1 {:value 2, :active true})

assoc可以有多个k / v对:

user=> (def m {:1 {:value 0, :active false}, :2 {:value 0, :active false}})
#'user/m
user=> (update-in m [:1] assoc :value 1 :active true)
{:1 {:value 1, :active true}, :2 {:value 0, :active false}}

还有assoc-in类似于assoc 唯一的区别是,您提供了一个键向量而不是一个键。 因此,也许您可​​以通过一些assoc-in来传递地图。

或者您使用功能update (1.7中添加):

(update {:1 {:value 0, :active false}, :2 {:value 0, :active false}
    :1 (fn [{:keys [value active]]
           (magic value active)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM