我目前已经实现了一种方法,可以按照地图中的深键进行排序:
(sort-by #(get-in % [:layer :order]) [{:layer {:order 1} {:layer {:order 2}])
我想知道是否有办法使用地图解构来做到这一点?这可用于let
以外的函数和参数定义吗?我想知道的一个例子是:
(sort-by {:layer {:order}} [{:layer {:order 1} {:layer {:order 2}])
答案 0 :(得分:1)
据我所知,你只能在let绑定或函数绑定中进行解构。这是您使用嵌套地图解构的方法:
(sort-by (fn [{{o :order} :layer}] o)
[{:layer {:order 2}}
{:layer {:order 1}}])
但是,我不认为这更清楚。由于关键字是函数,您还可以使用普通的旧函数组合:
(sort-by (comp :order :layer)
[{:layer {:order 2}}
{:layer {:order 1}}])