From: Josselin Date: 2007-03-06T01:50:08+09:00 Subject: Re: Nested blocks On 2007-03-05 17:31:31 +0100, Robert Klemme said: > On 05.03.2007 17:21, Josselin wrote: >> On 2007-03-05 17:00:58 +0100, Robert Klemme said: >> >>> On 05.03.2007 16:37, hemant wrote: >>>> On 3/5/07, Josselin wrote: >>>>> I am trying to nest 2 blocks, it's wrong but but I cannot find why .. >>>>> need some help.. I get only one resulting item >>>>> >>>>> I get info in geocodes Array (3 items) , need to get some of them into >>>>> 'places' another Array >>>>> >>>>> places = [ {:search => adresse}] >>>>> >>>>> geocodes.each { | geocode | >>>>> places.collect { | place | >>>>> place[:address] = geocode[:address] >>>>> place[:latitude] = geocode[:latitude] >>>>> place[:longitude] = geocode[:longitude] >>>>> } >>>>> } >>>>> >>>>> geocodes.nitems => 3 >>>> >>>> #collect doesn't modify the existing Enumerable and normally returns >>>> a Enumerable/Array. >>>> In other words, your inner block doesn't modify places array at all. >>> >>> No need for collect or collect! at all since he is modifying the >>> Hash(es) inside places. And since places contains only 1 element it >>> still does so after the iteration. Josselin, what do you expect to get? >>> >>> Kind regards >>> >>> robert >> >> Thanks for your comments.. >> >> well I expect to get 3 items (one for each geocodes item) >> where places[i][:longitude] = geocodes[i][:longitude], ..... >> I know that I could do an iteration (as in C) but I tried to do it >> without using an indexation ... >> >> places[i] >> => {:longitude=> geocodes[i][longitude], >> :latitude=>geocodes[i][longitude], :address=>geocodes[i][address]} >> >> joss >> >> > result = geocodes.map do |geocode| > {:search => adresse, :address => geocode[:address], ...} > end > > robert thanks.. so map and collect give the same result... not easy to forget iteration model ... so powerful methods w Ruby...