I have a structure of nested Maps and Vectors as follows:
(def document
{:sections
[{:items
[{:quantity 1}
{:quantity 2}]}
{:items
[{:quantity 3}
{:quantity 4}]}]})
The document has a vector of sections (one, in this case), each
section has a vector of items (two, here).
I want to increment the quantity of every item in every section. The
cleanest solution I've found this far is as follows:
(defn update-item [item]
(update-in item [:quantity] inc))
(defn update-section [section]
(update-in section [:items] (partial map update-item)))
(update-in document [:sections]
(partial map update-section))
I'm not concerned about map turning vectors into seqs.
If update-in supported some kind of wildcard, I could write this:
(update-in document [:sections * :items * :quantity] inc)
Where * is a wildcard, meaning "any key".
Does the wildcard idea have any merit? Is there a better way to go
about this?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---