什么是更新矢量内的地图的clojure方式如果我有这样的事情,假设每个地图都有独特的:name
clojure的方式来更新矢量内的地图
(def some-vec
[{:name "foo"
....}
{:name "bar"
....}
{:name "baz"
....}])
我想以某种方式更新地图,如果有:name
等于foo
。目前我使用map
,这样
(map (fn [{:keys [name] :as value}]
(if-not (= name "foo")
value
(do-something .....))) some-vec)
但通过整个向量这将循环,即使我只更新一个项目。
因为它是一个载体,需要循环遍吧,找你的元素,或者您可以knoy它的指数和指数接取它。你可以停止循环,当你发现你的元素,如果你知道它不会出现两次。可能只是矢量不是你的数据类型,尝试将其转换为映射和按键访问。 – coredump 2014-09-04 12:06:09