> LçÉettçËäº "Robert Klemme" <bob.news / gmx.net> > Aihe: Re: iteration the ruby way > > > "E S" <eero.saynatkari / kolumbus.fi> schrieb im Newsbeitrag > news:20050206143902.PIMQ15813.fep31-app.kolumbus.fi / mta.imail.kolumbus.fi... > >> LçÉettçËäº Kaspar Schiess <eule / space.ch> > >> Aihe: Re: iteration the ruby way > >>(In response to news:1107566961.943586.81760 / g14g2000cwa.googlegroups.com > > by William James) > >>> Shouldn't that be > >>> > >>> ary[0...-1].each {|e| do_something(e) } > >>> do_something_else(ary.last) > >>> > >>> or > >>> > >>> ary[0..-2].each {|e| do_something(e) } > >>> do_something_else(ary.last) > >>> > >>> ? > >> > >>I would prefer this solution for its clarity of expression. > > > > Me too :) I just think the #inject won on the neat-o factor, > > particularly since it seemed adequate for the OP. > > Partly yes and partly no: apart from the cute factor, there is a real > advantage of the inject solutions show: they work for *all* Enumerables > while the array indexing works only for arrays. So #inject is more general. > Also, Array#[] creates a new array instance along the way which is a bit > inefficient. But I do agree that the indexing might be more readable. I think assuming an Array is valid in the described scenario (which is the last element in a Hash, after all?) #inject certainly works for the OP's scenario, but if the goal is to apply a different method on the last element or even just to detect the last element, it is not as intuitive as indexing or an explicit #last. In addition, #each and #map provide different semantics for further clarity. > Kind regards > > robert E >