From: Carlos Agarie Date: 2012-12-28T11:09:34+09:00 Subject: Re: Case statement anomaly? --f46d04339c96fa5ae304d1e00925 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Paul, the "begin ... end" syntax is meant for exception handling. For example, you can use it like this: begin a =3D 1/0 rescue ZeroDivisionError puts "You tried to divide by zero!" end The "do ... end" syntax is used for blocks. The "when" part in a case statement doesn't accept a block argument (it's not even a method), so it is a syntax error. ----- Carlos Agarie Control engineering Polytechnic School, University of S=E3o Paulo, Brazil Computer engineering Embry-Riddle Aeronautical University, USA 2012/12/27 Paul Magnussen > This works: > > language_name =3D "C" > > case language_name > when "C" > puts "The language is C." > when "Rexx" > puts "The language is Rexx." > else > puts "The language is unknown" > end > > So does this: > > case language_name > when "C" > begin > puts "The language is C." > end > when "Rexx" > begin > puts "The language is Rexx." > end > else > begin > puts "The language is unknown." > end > end > > But this gives a syntax error: > > case language_name > when "C" > do > puts "The language is C." > end > when "Rexx" > do > puts "The language is Rexx." > end > else > do > puts "The language is unknown." > end > end > > Why? Nowhere I looked seemed to help. What am I missing? > > I know do/end isn't necessary, but why does it fail? > > Thanks. > > -- > Posted via http://www.ruby-forum.com/. > > --f46d04339c96fa5ae304d1e00925 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Paul, the "begin .= .. end" syntax is meant for exception handling. For example, you can u= se it like this:

begin
=A0 a =3D 1/0
rescue = ZeroDivisionError
=A0 puts "You tried to divide by zero!"
end
The "do ... end" syntax is used for blocks. The "when= " part in a case statement doesn't accept a block argument (it'= ;s not even a method), so it is a syntax error.


-----
Carlos Agarie

Control engineering
Polyte= chnic School,=A0University of S=E3o Paulo, Brazil
Computer engine= ering
Embry-Riddle Aeronautical University, USA


2012/12/27 Paul Magnussen <lists@rub= y-forum.com>
This works:

language_name =3D "C"

case language_name
=A0 when "C"
=A0 =A0 puts "The language is C."
=A0 when "Rexx"
=A0 =A0 puts "The language is Rexx."
=A0 else
=A0 =A0 puts "The language is unknown"
end

So does this:

case language_name
=A0 when "C"
=A0 =A0 begin
=A0 =A0 =A0 puts "The language is C."
=A0 =A0 end
=A0 when "Rexx"
=A0 =A0 begin
=A0 =A0 =A0 puts "The language is Rexx."
=A0 =A0 end
=A0 else
=A0 =A0 begin
=A0 =A0 =A0 puts "The language is unknown."
=A0 =A0 end
end

But this gives a syntax error:

case language_name
=A0 when "C"
=A0 =A0 do
=A0 =A0 =A0 puts "The language is C."
=A0 =A0 end
=A0 when "Rexx"
=A0 =A0 do
=A0 =A0 =A0 puts "The language is Rexx."
=A0 =A0 end
=A0 else
=A0 =A0 do
=A0 =A0 =A0 puts "The language is unknown."
=A0 =A0 end
end

Why? =A0Nowhere I looked seemed to help. =A0What am I missing?

I know do/end isn't necessary, but why does it fail?

Thanks.

--
Posted via http://= www.ruby-forum.com/.


--f46d04339c96fa5ae304d1e00925--