2010-11-29 23 views
15

que tienen la siguiente estructura de datos:Desestructurar un mapa en otro mapa?

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

me gustaría escribir una función que desestructura la tecla :resolution en width y height símbolos. Algo así como

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

¿Es posible algo así con la desestructuración?

Gracias.

Respuesta

18

primero debe desestructurar: resolución, a continuación, obtener la anchura y altura:

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

Como puedo desestructurar desde dentro de dos llaves anidadas diferentes de un mismo mapa? p.ej. '{{: keys [ab]}: query-params}' y '{{: keys [cd]}: path-params}' simultáneamente, desde el mismo mapa de solicitud –

+2

Simplemente póngalos en el mismo '{}': '{{: keys [ab]}: query-params {: keys [cd]}: path-params}' – Arjan

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

Trabaja para mí.