本文介绍了Clojure的地图:钥匙和vals在相同的顺序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以依靠Clojure 1.3+中的
(= m(zipmap(keys m)(vals m)))
?
在某些情况下,这种行为使得代码稍显可读,例如
(defn replace-keys [smap m]
(zipmap(replace smap(keys m))(vals m)))
vs。
(defn replace-keys [smap m]
(into [}(for [[kv] m] [(smap kk)v]))
解决方案是的,很多clojure会破坏,如果改变。
地图存储为树,两个函数走在同一棵树相同的顺序。
Is it ok to rely on
(= m (zipmap (keys m) (vals m)))
in Clojure 1.3+?Having this behavior makes for slightly more readable code in some situations, eg
(defn replace-keys [smap m] (zipmap (replace smap (keys m)) (vals m)))
vs.
(defn replace-keys [smap m] (into {} (for [[k v] m] [(smap k k) v]))
解决方案Yes, lots of clojure would break if that changed.
Maps are stored as trees and both functions walk the same tree in the same order.
这篇关于Clojure的地图:钥匙和vals在相同的顺序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!