将新值连接到驻留在映射或原子中的向量中的惯用方法是什么?
我最接近的是以下内容:
(def blog (atom {:posts []}))
(swap!
blog
(fn [current]
{:posts (conj (:posts current) {:title "War of Worlds"})}))
结果是:
{:posts [:title "War of Worlds"]}
lambda的使用让人觉得不必要的冗长。
我会这么做:
(swap! blog update-in [:posts] conj {:title "War of the Worlds"})
两者互换!按照"更新模型"的形式进行更新,它们可以像这样链接在一起。这是一种非常常见的模式,尤其是有状态容器和嵌套映射更新。
"更新模型"表示形式的函数:(defn u [context f & args])
调用为(apply f context args)
。