繁体   English   中英

Clojure,更新地图中的嵌套内容

[英]Clojure, update nested content in map

我对更新地图中的值所需的语法感到困惑,其中所述值是地图的向量。

给定一张地图:

   {:data-extracts [
                       {:name "some name"
                        :data "some data"
                        }]}

我如何更新:data的值,我知道您可以使用assocconj来修改地图(很好地返回新地图),但是我不确定当存在嵌套元素时这是如何工作的。

预期结果:

   {:data-extracts [
                       {:name "some name"
                        :data "new data"
                        }]}

有没有办法做下面的事情?

(update :data-extracts :data "new data")

这是如何实现的?

我尝试了以下方法:

(assoc opts :data-extracts [:name "Secret Escapes"
                            :data "new data"]))

但这不符合我的预期。

使用嵌套结构时,您需要使用*-in -functions(在这种情况下为assoc-in ),并为每个嵌套级别指定一个键。 对于矢量,它只是索引,对于地图,这是显而易见的:

(assoc-in [:data-extracts 0 :data] "new data") 

暂无
暂无

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

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