2015-10-07 1 views
2

Я хотел бы перевести вызов внутренней функции в следующем фрагменте, используя макрос #():использовать #() вместо (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)) 

Я немного смущен тем, как я могу это сделать.

ответ

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)) 

записку вам не нужно обернуть сравниваемые значения в векторе.