Hi,
I have a question about assigning the contents of a list of variables
with names like title1, title2, title3 up to title20 to an array.
Currently, this is the code that I use.
title1 = ruby
title2 = rails
title3 = typo
.
.
.
title20 = ajax
title_array = [title1, title2, title3, title4, title5, title6, title7,
title8, title9, title10, title11, title12, title13, title14, title15,
title16, title17, title18, title19, title20]
title_array.each do | i |
do something...
end
Is there a shorter way to do this? Instead of typing all the variable
names, can I use a range to do this? Like title(1..20)?
Thanks for any help with this.
···
--
Posted via http://www.ruby-forum.com/ .
I am confused, why not title_array = [ ruby, rails, typo, ..., ajax ]
However if really want to do this, (I really think this needs a redesign though) you can do this:
title_array =
(1..20).each do |i|
title_array << eval("title#{i}")
end
···
On Mar 6, 2006, at 11:14 AM, Paul Tsung wrote:
Hi,
I have a question about assigning the contents of a list of variables
with names like title1, title2, title3 up to title20 to an array.
Currently, this is the code that I use.
title1 = ruby
title2 = rails
title3 = typo
.
title20 = ajax
title_array = [title1, title2, title3, title4, title5, title6, title7,
title8, title9, title10, title11, title12, title13, title14, title15,
title16, title17, title18, title19, title20]
title_array.each do | i |
do something...
end
Is there a shorter way to do this? Instead of typing all the variable
names, can I use a range to do this? Like title(1..20)?
Thanks for any help with this.
-- Posted via http://www.ruby-forum.com/\ .
Is there a shorter way to do this? Instead of typing all the variable
names, can I use a range to do this? Like title(1..20)?
You can use eval.
irb(main):106:0> title1="rails"
=> "rails"
irb(main):107:0> title2="ruby"
=> "ruby"
irb(main):108:0> title3="typo"
=> "typo"
irb(main):117:0> (1..3).each do |num|
irb(main):118:1* eval "puts title#{num}"
irb(main):119:1> end
rails
ruby
typo
I'm not sure if there is a way to get a reference to an object if you
know it's symbol, but if there is that might be more elegant.
Farrel
Robert
(Robert)
6 March 2006 16:43
4
Paul Tsung wrote:
Hi,
I have a question about assigning the contents of a list of variables
with names like title1, title2, title3 up to title20 to an array.
Currently, this is the code that I use.
title1 = ruby
title2 = rails
title3 = typo
Where exactly is the array in your example? I'm a bit confused. Do you
want this?
title = %w{ruby rails typo}
=> ["ruby", "rails", "typo"]
Kind regards
robert