【发布时间】:2014-09-04 11:29:40
【问题描述】:
更新向量内的地图的 clojure 方法是什么,例如如果我有这样的东西,假设每张地图都有唯一的:name
(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)
但是即使我只更新一个项目,这也会遍历整个向量。
【问题讨论】:
-
因为它是一个向量,所以你需要遍历它来找到你的元素,或者你可能知道它的索引并通过索引访问它。你可以停止循环,当你找到你的元素时,如果你知道它不会出现两次。可能是矢量不是您的数据类型,请尝试将其转换为映射并按键访问。
标签: clojure