说我有一个具有以下结构的节点
(def root {:name "-" :children [{:name "A" :children []}]})
我想向根节点添加第二个孩子。
{:name "B" :children []}
我以为我可以使用update
例如
(update root :children #(conj (:children %) {:name "B" :children []}))
但是,这导致:
{:name "-", :children ({:name "B", :children []})}
即使使用conj
,我也丢失了“ A”吗?而且:children
向量现在也是列表...
我在这里做错了什么?我使用的是完全错误的功能吗?
知道了,在添加子项的函数中,我不需要(:children%)。我应该一直在使用
(update root :children #(conj % {:name "B" :children []}))
看起来函数希望传递:children的原始值,而不是整个地图:)