On Dec 4, 2007 4:55 PM, lpgauth / gmail.com <lpgauth / gmail.com> wrote:
> On Dec 4, 4:19 pm, MenTaLguY <men... / rydia.net> wrote:
> > On Wed, 5 Dec 2007 05:42:21 +0900, MenTaLguY <men... / rydia.net> wrote:
> > > On Wed, 5 Dec 2007 05:35:01 +0900, "lpga... / gmail.com" <lpga... / gmail.com>
> > > wrote:
> > >> Assume I have:
> >
> > >>    for user in @Users
> > >>       put user.name
> > >>       put user.name #I want this to be next object in @Users
> > >>    end
> >
> > >> I want the second user.name to be the next object in the list. Is
> > >> there a way to do this?
> >
> > > Of course.  But what do you want to happen when you're at the end
> > > of the list and there is no longer a next object?
> >
> > That is, if you only care about pairs of users, then you can do this:
> >
> >  prior = nil
> >  for user in @Users
> >    if prior
> >      put prior.name
> >      put user.name
> >    end
> >    prior = user
> >  end
> >
> > Obviously that won't print anything if there is only one entry in
> > @Users, though.
> >
> > -mental
>
> I figured it out... You can use in_group_of
>
>


Cool!  That's from Rails (not part of Ruby), but there's also each_slice(n):

require 'enumerable'

a = [1, 2, 3, 4]

a.each_slice(2) {|slice| puts slice[0] + slice[1]}

=>

3
7