[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Array range.

Paul Tsung

3/6/2006 4:15:00 PM

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
4 Answers

Logan Capaldo

3/6/2006 4:21:00 PM

0


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

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




Farrel Lifson

3/6/2006 4:30:00 PM

0

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

3/6/2006 4:41:00 PM

0

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

Paul Tsung

3/6/2006 4:59:00 PM

0

Logan Capaldo wrote:
> On Mar 6, 2006, at 11:14 AM, Paul Tsung wrote:
>
>> .
>> 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-....
>>
>
> 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

Thank you for everyone's help with this. The eval method is what I was
looking for. The contents for the variables are actually inside a
database. I just use title1 = ruby as an example. Thanks again.


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