我有下面的樹:如何最好地更新這棵樹?
{:start_date "2014-12-07"
:data {
:people [
{:id 1
:projects [{:id 1} {:id 2}]}
{:id 2
:projects [{:id 1} {:id 3}]}
]
}
}
我想通過添加:name
鍵值對更新people
和projects
子樹。 假設我有這些地圖進行查找:
(def people {1 "Susan" 2 "John")
(def projects {1 "Foo" 2 "Bar" 3 "Qux")
讓我最終下我怎麼會更新原有的樹?
{:start_date "2014-12-07"
:data {
:people [
{:id 1
:name "Susan"
:projects [{:id 1 :name "Foo"} {:id 2 :name "Bar"}]}
{:id 2
:name "John"
:projects [{:id 1 :name "Foo"} {:id 3 :name "Qux"}]}
]
}
}
我試過的assoc-in
,update-in
,get-in
和map
調用多種組合,但一直沒能想出解決辦法。
謝謝。除了解決我的問題,這帶來了'letfn'我的注意:) – 2014-12-07 23:03:45
我不明白什麼傳遞'(項目(:ID%))'作爲'assoc' lambda的值。 「項目」不是一張地圖嗎?在這種情況下它如何被用作函數? – 2014-12-07 23:17:21
哦,我剛剛意識到'(projects(:id%))'是'(get projects(:id%))'的簡寫。 – 2014-12-08 00:06:33