2010-11-29 6 views
15

je la structure de données suivantes:Destructurer une carte dans une autre carte?

{:file #<File /foo.bar>, :resolution {:width 1280, :height 1024}} 

Je voudrais écrire une fonction qui déstructure la clé :resolution dans width et height symboles. Quelque chose comme

(defn to-directory-name [{{:keys [width height]}} wallpaper] 
    (str width "x" height)) 

Est-ce que quelque chose comme ça est possible avec la déstructuration?

Merci.

Répondre

18

Vous devez d'abord déstructurer: résolution, puis obtenir la largeur et la hauteur:

{{:keys [width height]} :resolution} 
+0

Comment puis-je déstructurer à partir de deux touches imbriquées différentes de la même carte? par exemple. '{{: keys [ab]}: query-params}' et '{{: keys [cd]}: path-params}' simultanément, à partir de la même carte de requête –

+2

Il suffit de les mettre dans le même '{}': '{{: keys [ab]}: paramètres-de-requête {: keys [cd]}: path-params}' – Arjan

4
(defn to-directory-name [{{width :width height :height} :resolution}] 
    (str width "x" height)) 

Fonctionne pour moi.

Questions connexes