我对更新地图中的值所需的语法感到困惑,其中所述值是地图的矢量。
给出一张地图:
{: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"]))
但这并不像我预期的那样有效。
答案 0 :(得分:3)
使用嵌套结构时,您需要使用*-in
- 函数(在本例中为assoc-in
)并为每个嵌套级别指定一个键。在矢量的情况下,它只是索引,如果是地图,很明显:
(assoc-in [:data-extracts 0 :data] "new data")