[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

range question

Li Chen

12/20/2006 4:51:00 PM

Hi all,

I want to create an array as following:
a4=['name 1','name 2'...'name 20'].

It looks like a range for me. But I can't find a
method in class Range to create this array. Here is my
script I am not sure if this the Ruby way to do this.
Any inputs?

Li

#
str='name 1'
a4=[]
1.upto(20) do|i|
a4 <<(str.split()[0]+" #{i}")
end

p a4
#output
["name 1", "name 2", "name 3", "name 4", "name 5",
"name 6", "name 7", "name 8", "name 9", "name 10",
"name 11", "name 12", "name 13", "name 14", "name 15",
"name 16", "name 17", "name 18", "name 19", "name 20"]
>Exit code: 0


__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail...

8 Answers

Bruno Michel

12/20/2006 4:54:00 PM

0

chen li a écrit :
> Hi all,
>
> I want to create an array as following:
> a4=['name 1','name 2'...'name 20'].
>
> It looks like a range for me. But I can't find a
> method in class Range to create this array. Here is my
> script I am not sure if this the Ruby way to do this.
> Any inputs?
>
> Li
>
> #
> str='name 1'
> a4=[]
> 1.upto(20) do|i|
> a4 <<(str.split()[0]+" #{i}")
> end
>
> p a4
> #output
> ["name 1", "name 2", "name 3", "name 4", "name 5",
> "name 6", "name 7", "name 8", "name 9", "name 10",
> "name 11", "name 12", "name 13", "name 14", "name 15",
> "name 16", "name 17", "name 18", "name 19", "name 20"]
>> Exit code: 0

I will do it like this :

$ irb
>> (1..20).map { |i| "name #{i}" }
=> ["name 1", "name 2", "name 3", "name 4", "name 5", "name 6", "name
7", "name 8", "name 9", "name 10", "name 11", "name 12", "name 13",
"name 14", "name 15", "name 16", "name 17", "name 18", "name 19", "name 20"]

--
Bruno Michel

Uma Geller

12/20/2006 4:56:00 PM

0

> It looks like a range for me. But I can't find a
> method in class Range to create this array. Here is my
> script I am not sure if this the Ruby way to do this.
> Any inputs?

("blah 01".."blah 20").each {|e| puts e}

hope that helps,

UG
---
Uma Geller
http://umageller.wor...

Ara.T.Howard

12/20/2006 5:01:00 PM

0

Antonio Cangiano

12/20/2006 5:13:00 PM

0

chen li wrote:
> Hi all,
>
> I want to create an array as following:
> a4=['name 1','name 2'...'name 20'].

a4 = (1..20).collect{|n| "name #{n}"}

Cheers,
Antonio
--
http://antonioca...
Zen and the Art of Ruby Programming

Daniel Finnie

12/20/2006 8:24:00 PM

0

base = "name 00"
ary = []
20.times{ary << base.succ!.dup}

or:

base = "name "
ary = []
1.upto(20) {|x| ary << base + x.to_s}

chen li wrote:
> Hi all,
>
> I want to create an array as following:
> a4=['name 1','name 2'...'name 20'].
>
> It looks like a range for me. But I can't find a
> method in class Range to create this array. Here is my
> script I am not sure if this the Ruby way to do this.
> Any inputs?
>
> Li
>
> #
> str='name 1'
> a4=[]
> 1.upto(20) do|i|
> a4 <<(str.split()[0]+" #{i}")
> end
>
> p a4
> #output
> ["name 1", "name 2", "name 3", "name 4", "name 5",
> "name 6", "name 7", "name 8", "name 9", "name 10",
> "name 11", "name 12", "name 13", "name 14", "name 15",
> "name 16", "name 17", "name 18", "name 19", "name 20"]
>> Exit code: 0
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail...
>
>

William James

12/20/2006 8:24:00 PM

0

chen li wrote:
> Hi all,
>
> I want to create an array as following:
> a4=['name 1','name 2'...'name 20'].
>
> It looks like a range for me. But I can't find a
> method in class Range to create this array. Here is my
> script I am not sure if this the Ruby way to do this.
> Any inputs?

('1'..'20').map{|s| 'name ' + s}

Bob Showalter

12/20/2006 8:36:00 PM

0

On 12/20/06, chen li <chen_li3@yahoo.com> wrote:
> Hi all,
>
> I want to create an array as following:
> a4=['name 1','name 2'...'name 20'].
>
> It looks like a range for me. But I can't find a
> method in class Range to create this array. Here is my
> script I am not sure if this the Ruby way to do this.
> Any inputs?

Range has a to_a method, but it won't work for 'Name 1'..'Name 20' (it
does for 'Name 01'..'Name 20' as pointed out).

I would use

arr = (1..20).collect{|i| "name #{i}"}

Li Chen

12/21/2006 8:29:00 PM

0

Bob Showalter wrote:
>
> Range has a to_a method, but it won't work for 'Name 1'..'Name 20' (it
> does for 'Name 01'..'Name 20' as pointed out).
>
> I would use
>
> arr = (1..20).collect{|i| "name #{i}"}

Thank all for your kindly inputs.

li

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