【发布时间】:2016-07-11 08:20:22
【问题描述】:
是否有 Clojure 函数可以交换持久映射中两个键的值? 我的意思是这样的:
(defn swap-keys [map k1 k2]
(let [f (get map k1) s (get map k2)]
(assoc map k1 s k2 f)))
(swap-keys {:a 1 :b 2 :c 3 :d 4} :a :c)
;; => {:a 3, :b 2, :c 1, :d 4}
【问题讨论】:
-
What is the idiomatic way to swap two elements in a vector 的可能重复项;在这种情况下,地图和矢量没有区别。
-
@Elogent 我已经知道如何达到预期的效果,我宁愿在 Clojure 标准库中寻找一个可以为我完成这项工作的函数。所以,我的问题不是如何做到这一点,而是 Clojure 函数(如果有的话)做这项工作,因此你提到的问题与我的不同。
-
在任何情况下,两个不同的问题可能承认相同的答案。 :)
-
@galdre 当然可以,但情况并非如此。甚至反应是不同的。我的问题的一个可能答案是下面的这个 -
clojure.set/rename-keys(标准 Clojure 函数),而对上述问题的答案是用户定义的函数。
标签: collections clojure clojurescript