Newby question determining name of an array at run-time

(Sorry for not finding a better title to my question. I'm not shure if this has something to do with metaprogramming... I have hear about that, but never had time to learn about it, so I don't know what is metaprogramming exactly)

Is there a way to do something like this?

arr = [ "red", "green", "yellow" ]

# the following arrays should be incremented with the loop down
@red = []
@green = []
@yellow = []

#here the loop that should increment the arrays
20.times do
   arr.each { |color|
      rand(60)
      unless @color.include?(aleat) #this doesn't work
         @color.push(aleat) # this doesn't work...
      end
   }
end
      ...

Thanks in advance.

···

______________________________________________ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com

Alfonso wrote:

(Sorry for not finding a better title to my question. I'm not shure if
this has something to do with metaprogramming... I have hear about that,
but never had time to learn about it, so I don't know what is
metaprogramming exactly)

Is there a way to do something like this?

arr = [ "red", "green", "yellow" ]

# the following arrays should be incremented with the loop down
@red =
@green =
@yellow =

Are you after named arrays? Do it this way:

hash = {}

hash[:red] =
hash[:green] =
hash[:blue] =

hash.keys.each do |color|
  array = hash[color]
  #do something here
end

But if you need to go through the colors in a particular order:

[ :red,:green,:blue ].each do |color|
# etc.

#here the loop that should increment the arrays
20.times do
   arr.each { |color|
      rand(60)
      unless @color.include?(aleat) #this doesn't work
         @color.push(aleat) # this doesn't work...
      end
   }
end

It always helps for you to say what you are trying to do, not just that it
didn't work.

···

--
Paul Lutus
http://www.arachnoid.com

Have a look at instance_variable_get in the RDocs - that'll do what you want.

Cheers,
Max

···

On 12/1/06, Alfonso <rubyeu@yahoo.es> wrote:

(Sorry for not finding a better title to my question. I'm not shure if
this has something to do with metaprogramming... I have hear about that,
but never had time to learn about it, so I don't know what is
metaprogramming exactly)

Is there a way to do something like this?

arr = [ "red", "green", "yellow" ]

# the following arrays should be incremented with the loop down
@red =
@green =
@yellow =

#here the loop that should increment the arrays
20.times do
   arr.each { |color|
      rand(60)
      unless @color.include?(aleat) #this doesn't work
         @color.push(aleat) # this doesn't work...
      end
   }
end
      ...

The method instance_variable_get was exactly what I needed.

Thank you very much for your answers

···

______________________________________________ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com