嵌入式映射中的更新

时间:2013-08-20 02:11:12

标签: clojure

我是clojure的新手,我已经盯着这个看了一段时间,我确信有一些我根本看不到的基本内容。我想结合两组,但它们是嵌套的,例如:

(def foo {:b #{:test}})
(def bar {:a {:b #{:ab}} :c :d})

我试过了:

=>(update-in bar [:a :b] conj (:b foo) )
{:a {:b #{#{:test} :ab}}, :c :d}

我想这是有道理的,但我想要的是{:a {:b#{:test:ab}},:c:d}

我似乎无法将#{:test}从集合中取出来,或者正确访问:b作为给定update-in语法的集合。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您需要使用into代替conj

(update-in bar [:a :b] into (:b foo))
;= {:a {:b #{:test :ab}}, :c :d}