簡體   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