[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

how to create multiple different arrays using a loop

Andy Black

8/20/2006 5:26:00 AM

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.

--
Posted via http://www.ruby-....

5 Answers

Luke A. Kanies

8/20/2006 5:37:00 AM

0

On Aug 20, 2006, at 12:26 AM, Andy Black wrote:

> 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.

--
Luke Kanies
http://m... | http://reducti... | 615-594-8199



Jeff Schwab

8/20/2006 2:55:00 PM

0

Andy Black wrote:
> 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.

How about a[0], a[1], etc.?

text = <<SAMPLE_TEXT
Now is the time
for all good men
to come to the aid
of their party.
SAMPLE_TEXT

a = []
text.each {|line|
words = line.split
a << words
}

p a[3] # ["of", "their", "party"]
p a[0] # ["Now", "is", "the", "time"]

Robert Klemme

8/20/2006 3:24:00 PM

0

Luke Kanies <luke@madstop.com> wrote:
> On Aug 20, 2006, at 12:26 AM, Andy Black wrote:
>
>> 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:

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

Luke A. Kanies

8/20/2006 4:47:00 PM

0

On Aug 20, 2006, at 10:25 AM, Robert Klemme wrote:

> Luke Kanies <luke@madstop.com> wrote:
>> 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".

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.

--
Luke Kanies
http://m... | http://reducti... | 615-594-8199



Andy Black

8/20/2006 8:17:00 PM

0

Luke Kanies wrote:
> On Aug 20, 2006, at 10:25 AM, Robert Klemme wrote:
>
>> Luke Kanies <luke@madstop.com> wrote:
>>> 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".
>
> 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

--
Posted via http://www.ruby-....