Tim Visher
Tim Visher

Reputation: 12854

Destructure a map in another map?

I have the following data structure:

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

I would like to write a function that destructures the :resolution key into width and height symbols. Something like

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

Is something like that possible with destructuring?

Thanks.

Upvotes: 29

Views: 7515

Answers (2)

Arjan
Arjan

Reputation: 21465

You must first destructure :resolution, then get width and height:

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

Upvotes: 31

Maurits Rijk
Maurits Rijk

Reputation: 9985

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

Works for me.

Upvotes: 7

Related Questions