From: Christophe Grandsire Date: 2005-10-28T13:42:50+09:00 Subject: Re: difference between the each iterator and the collect iterator? Selon vasten@gmail.com : > Hi: > I am a newbie as far as Ruby is concerned. I was going through the > programming ruby book (2nd Edition), but was not able to figure out the > difference between the 2 statements: > > [1, 2, 3, 4].collect{[i] puts i } > and > [1, 2, 3, 4].each{|i| puts i } > > Can some guru in this group shed some light? > > Thanks. > > #collect applies the block on each value of the array, and *returns the result of the expression as an array for each value*. #each applies the block on each value of the array, but *returns the unmodified array*. #collect is used for the effect it has on the array, #each is just used for looping. You can't see the difference here because you are not catching the array returned by #collect. Usually one would do: result = [1,2,3,4].collect{|i| do_something(i)} while leaving #each the way you did it. -- Christophe Grandsire. http://rainbow.conlang.free.fr You need a straight mind to invent a twisted conlang.