在 (sorted-map-by ...) 中使用 #() 而不是 (fn ...)

use #() instead of (fn ...) in (sorted-map-by ...)

我想将以下代码段中的内部函数调用转换为使用 #() 宏的调用:

(let [m {:a 3, :b 2, :c 4, :x 9, :y 0, :z 5}]
  (into (sorted-map-by (fn [key1 key2]
                         (compare [(get m key2)]
                                  [(get m key1)]))) m))

我对如何做到这一点有点困惑。

在匿名函数中,参数由 %1、%2...给出,因此您可以使用

(let [m {:a 3, :b 2, :c 4, :x 9, :y 0, :z 5}]
  (into (sorted-map-by #(compare (get m %2)
                                 (get m %1))) m))

请注意,您不需要将比较值包装在向量中。