在 (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))
请注意,您不需要将比较值包装在向量中。
我想将以下代码段中的内部函数调用转换为使用 #()
宏的调用:
(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))
请注意,您不需要将比较值包装在向量中。