使用#()代替(fn ...)in(sorted-map-by ...)

时间:2015-10-07 19:08:59

标签: clojure anonymous-function

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

(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 个答案:

答案 0 :(得分:5)

在匿名函数中,参数由%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))

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