如果我要在keys
类型上拨打sorted-map
,我会假设结果seq
与地图中的键值对的顺序相同。
然而,名为Jarzka的ClojureDocs用户在大约2年前说过:
我注意到键并不总是以相同的顺序返回。通常它们是,但并非总是如此。
(不幸的是,我无法直接链接到评论。它位于描述keys
的页面底部。)
为什么会这样?我(sort (keys m))
应该安全吗?
(def m (sorted-map :a 1, :b 2, :c 3))
(def maybe-unsorted-keys? (keys m))
(def sorted-keys (sort (keys m)))
答案 0 :(得分:2)
如果你看一下key和val的实现,它看起来是一个有效的假设,它们将以相同的顺序返回,排序:
https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/PersistentTreeMap.java#L888
答案 1 :(得分:1)