我有一个矢量和一张地图.并且想要替换vector元素(如果它是一个map键)(用值替换键)
user=> (def v [:a :b :c :d])
#'user/v
user=> (def m {:a :k, :c :q} )
#'user/m
user=> (reduce (fn[x y] (conj x (if (y m) (y m) y))) [] v)
[:k :b :q :d]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
由于您的输入和输出是相同长度的集合,并且集合项是独立计算的,因此使用它map或mapv使用矢量输出会更简单,更惯用.
(mapv (fn [x] (m x x))
v)
Run Code Online (Sandbox Code Playgroud)
或者干脆
(mapv #(m % %) v)
Run Code Online (Sandbox Code Playgroud)
注意(m x x)类似于(if (contains? m x) (m x) x).
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |