How to do a for loop...and iterate a set number of times?


#1

So painfully basic, but I’m just starting Ruby and am coming to it from
C/C++/Java, etc. and some of the syntax is unnatural to me, and yes,
I’ve tried Google. I have an array of things and I want to access the
first 10…how do I do that?

for thing in things #(how do I set the beginning and end of the loop?)
#do something
end


#2

one solution would be:
for thing in things[0…9]

end


#3

El Jueves, 29 de Enero de 2009, Dan No escribió:

for thing in things #(how do I set the beginning and end of the loop?)
#do something
end

things.each {|thing|
#do something
}


#4

Dan No wrote:

So painfully basic, but I’m just starting Ruby and am coming to it from
C/C++/Java, etc. and some of the syntax is unnatural to me, and yes,
I’ve tried Google. I have an array of things and I want to access the
first 10…how do I do that?

for thing in things #(how do I set the beginning and end of the loop?)
#do something
end

Usually collections define an each method. Each call into the block gets
the next element in the collection. You don’t have to worry about the
beginning and end of the loop. The each method and its friends are
considered the most idiomatic.

ary.each {|element| …}

Or if you just want the equivalent of a C for loop, use upto. The block
argument is the current count, starting with ‘start’:

start.upto(finish) {|n| …}

Also there’s step, which lets you use an increment other than 1:

start.step(finish, incr) {|n| …}

It really depends on what you want to do.


#5

If you want the first 10, just do this:

ary[0…9]

Sent from my iPhone


#6

It actually requires a little bit different thinking because once you
know idiomatic ruby, all the ‘language’ stuff you have to worry about
becomes stuff you just don’t have to think about, like building new
arrays pit of existin ones, splitting things up, etc

Sent from my iPhone


#7

Um the beginning is the beginning and the end is the end. It’s simple.
You don’t have to manage it!

Sent from my iPhone


#8

On Thu, Jan 29, 2009 at 11:24 PM, Dominik H. removed_email_address@domain.invalid
wrote:

one solution would be:
for thing in things[0…9]

end
maybe
things.first( 10 ).each do |thing|

end
is a little bit more idiomatic.
Cheers
Robert


#9

On Fri, Jan 30, 2009 at 6:43 AM, Julian L.
removed_email_address@domain.invalid wrote:

Um the beginning is the beginning and the end is the end. It’s simple. You
don’t have to manage it!

We shall however consider the possibility that the properties of
Enumerable cannot be extended to metaphysics :slight_smile:
R.