[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

A syntax question about nested 'each' blocks

stephen.tashiro

3/22/2006 4:59:00 PM

Would someone explain the syntax of nested blocs vis-a-vis the use of
Array.each ?

I thought that 'lname' would be an element of an Array in the program
below. But the interpreter (ruby-1.8.4-1.fc3 in Fedora Core 3) tells
me it is the entire Array.

first_name = Array.[]( "Joe ","Albert ","Lilly ","Henry ","Becky
","Ray ")
last_name = Array.[]( "Groster", "Riplaid", "Pewley", "Lundrund",
"Banks" }}

tmp_name = "long string of nothing"

first_name.each { |fname|

last_name.each { |lname|

tmp_name = fname
# tmp_name = fname + lname # This produces a syntax error
# puts(tmp_name)

puts( lname.inspect)

}

}

6 Answers

Jeff

3/22/2006 5:19:00 PM

0

unknown wrote:
> Would someone explain the syntax of nested blocs vis-a-vis the use of
> Array.each ?

Your code works for me, but I had to first replace the }} with ) at the
end of your last_names definition. I also removed Array.new which is
unneeded, though you can keep that if you want:

first_name = [ "Joe ","Albert ","Lilly ","Henry ","Becky ","Ray " ]
last_name = [ "Groster", "Riplaid", "Pewley", "Lundrund", "Banks" ]

Jeff
www.softiesonrails.com

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


stephen.tashiro

3/22/2006 5:35:00 PM

0

Thanks. My code works for me too, with your corrections! But does it
work for you to use

last_name = %w{ Groster Riplaid Pewley Lundrund Banks }

(as in Programming Ruby 1st Ed p 10 )
That's what I had before I mangled it in my experimentations.

stephen.tashiro

3/22/2006 5:37:00 PM

0

.... I meant:

last_name = Array.new[] %w{ Groster Riplaid Pewley Lundrund Banks}

It does work for me if I leave out Array.new[]

stephen.tashiro

3/22/2006 5:50:00 PM

0

.... or rather
last_name = Array.[] %w { Groster Riplaid Pewley Lundrund Banks }

(I'm beginning to see that Ruby syntax is rather like bash syntax, but
only in that almost anything you type will at least start to do
something.)

Robert Klemme

3/22/2006 6:02:00 PM

0

stephen.tashiro@us.army.mil wrote:
> Thanks. My code works for me too, with your corrections! But does it
> work for you to use
>
> last_name = %w{ Groster Riplaid Pewley Lundrund Banks }

Yes.

robert

Jim Weirich

3/22/2006 6:51:00 PM

0

unknown wrote:
> .... or rather
> last_name = Array.[] %w { Groster Riplaid Pewley Lundrund Banks }
>
> (I'm beginning to see that Ruby syntax is rather like bash syntax, but
> only in that almost anything you type will at least start to do
> something.)

Try:

last_name = Array.[] *%w{ Groster Riplaid Pewley Lundrund Banks }

Notice there is no space between the "%w" and "{". Also note the use of
the splat operator "*" to flatten the array into the argument list.

Without the splat, it is equivalent to:

Array[ %w{ a b } ] => Array[ [ 'a', 'b' ] ]

With the splat, it is equivalent to:

Array[ * %w{ a b } ] => Array[ 'a', 'b' ]

HTH

--
-- Jim Weirich

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