[英]Clojure, update nested content in map
我对更新地图中的值所需的语法感到困惑,其中所述值是地图的向量。
给定一张地图:
{:data-extracts [
{:name "some name"
:data "some data"
}]}
我如何更新:data的值,我知道您可以使用assoc
或conj
来修改地图(很好地返回新地图),但是我不确定当存在嵌套元素时这是如何工作的。
预期结果:
{: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.