how to create multiple different arrays using a loop

A

Andy Black

Hi list,

I need to create a different array each time that I am going through a
loop.
I wonder how I can assign different names to the arrays based on the
iteration count.
For example first time that I go through the loop I want to create an
array named: a1, second one, a2 and so on.
Thanks a lot for your help.
 
L

Luke Kanies

Hi list,

I need to create a different array each time that I am going through a
loop.
I wonder how I can assign different names to the arrays based on the
iteration count.
For example first time that I go through the loop I want to create an
array named: a1, second one, a2 and so on.
Thanks a lot for your help.

By far the easiest way to do this is to stick them in a hash:

hash = {}
10.times do |count|
hash["a" + count.to_s] = [....]
end

This is, um, very similar to an array, except with "a<count>" as the
subscript instead of <count>.

If you absolutely must have a variable, then AFAIK you have to use an
instance variable:

10.times do |count|
instance_variable_set("@a#{count}", [...])
end

There might be a way to create a local variable, but even if you did
it would go out of scope as soon as the block ended, so it would be
pretty useless.
 
R

Robert Klemme

Luke Kanies said:
By far the easiest way to do this is to stick them in a hash:

I'd say Jeffrey's approach (i.e. stick those arrays into an array) is by far
the easiest and hassle free approach. Your approach has the disadvantage
that it will loose creation order because alphanumeric sorting of names like
"a1", "a2" etc. will only work until "a9".

Kind regards

robert
 
L

Luke Kanies

I'd say Jeffrey's approach (i.e. stick those arrays into an array)
is by far
the easiest and hassle free approach. Your approach has the
disadvantage
that it will loose creation order because alphanumeric sorting of
names like
"a1", "a2" etc. will only work until "a9".

Sure; if you need to be able to sort based on name, use an array, I
suppose. OP implied naming was more important than ordering, which
usually means a hash, but either is sufficient, clearly.
 
A

Andy Black

Luke said:
Sure; if you need to be able to sort based on name, use an array, I
suppose. OP implied naming was more important than ordering, which
usually means a hash, but either is sufficient, clearly.

Thanks to all of you...I used your suggestions and my code is working
fine
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,043
Latest member
CannalabsCBDReview

Latest Threads

Top