You *can* update this inside the vector, but if you want to key by :id, I would personally recommend, you put the email data into a map and look it up by :id, like this:
{1 {:id 1 :email {"a...@mail.com 1}} 2 {:id 2 :email {"d...@mail.com 1}} 3 {:id 3 :email {"g...@mail.com 2}}} Best, Alex On Mon, Jun 3, 2013 at 1:44 PM, Yinka Erinle <yeri...@gmail.com> wrote: > Thanks Meikel for the prompt reply, that does it. > > Please can you elaborate on how I can use the solution below to update a > particular entry in the vector. > > [{:id 1 :email {"a...@mail.com 1}} > {:id 2 :email {"d...@mail.com 1}} > {:id 3 :email {"g...@mail.com 2}}] > > So I will like to write a function that accepts an id and then updates the > counter in email section of the given id. > > (defn update-counter [x xs] > (dosync > (alter result ...... > > Thanks again for your time. > > > On Monday, June 3, 2013 9:23:47 PM UTC+1, Meikel Brandmeyer (kotarak) > wrote: >> >> Hi, >> >> Am Montag, 3. Juni 2013 22:16:54 UTC+2 schrieb Yinka Erinle: >>> >>> Given I have the following >>> (def result (ref [ { :id 1 :emails { "yi...@mail.com" 1}} ] ) ) >>> >>> I like to alter the result in a transaction to become >>> [{:id 1 :emails { "yi...@mail.com" 2}}] ; increment the counter from >>> 1 to 2 >>> >>> Please can someone provide pointers. >>> >>> >> You can use the uniform update principle to stitch together alter and >> update-in. >> >> (dosync >> (alter result update-in [0 :emails "a@b.c"] inc)) >> >> Kind regards >> Meikel >> >> > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.