If-Then and "End"


#1

I am making a program with various commands. One of them is “Exit” which
is supposed to exit the program. Here is my code:

if uinput = “EXIT” then
end
end

The problem is that the ruby compiler thinks that the first “end” is the
end to the If-Then statement, instead of the “end” that ends the
program. How do I work around this?


#2

Sam C. wrote:


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

if uinput = “EXIT” then
exit
end

That should work. Each ‘end’ is matched with the closest previous
unmatched block opener (‘if’ in this case). It doesn’t have anything to
do with terminating a script. hth


#3

On Jan 22, 2007, at 11:32 PM, Sam C. wrote:

end to the If-Then statement, instead of the “end” that ends the
program. How do I work around this?

I think you are looking for ‘exit’ as the method to call to terminate
a program.
Also you aren’t doing a comparison in your if condition, you are
doing an assignment.
So you want something like:

if uinput == “EXIT” then
exit
else

do something else

end

Gary W.


#4

“Sam C.” removed_email_address@domain.invalid
дÈëÏûÏ¢ÐÂÎÅ:removed_email_address@domain.invalid…


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

It’s not the Pascal£¬program end with an ‘End.’, just use exit.


#5

removed_email_address@domain.invalid writes:

you are doing an assignment. So you want something like:

if uinput == “EXIT” then
exit
else

do something else

end

Just a small point: you don’t need an ‘else’ clause after an ‘exit’,
since nothing could follow that statement. Hence, you can just do this
if you want, and it will have the same effect:

if uinput == “EXIT” then
exit
end

do something else

I tend to do that with ‘exit’, ‘return’, ‘raise’, ‘throw’, ‘next’,
‘redo’, and ‘break’ statements, to avoid excessive nesting. But that’s
just a stylistic thing.


#6

On Jan 23, 2007, at 04:47, Lloyd Z. wrote:

I tend to do that with ‘exit’, ‘return’, ‘raise’, ‘throw’, ‘next’,
‘redo’, and ‘break’ statements, to avoid excessive nesting. But
that’s
just a stylistic thing.

For that matter, you don’t need “then” unless it’s all on one line:

if uinput == “EXIT” then exit end

exit if uinput == “EXIT”

or

if uinput == “EXIT”
exit
end

For safety reasons, you could even do:

if “EXIT” == uinput
exit
end

this way if you accidentally use “=” instead of “==” you’ll get an
error:

Ruby will give you a warning if it spots a “=” in a conditional, but
often you want an error instead.

Ben


#7

On 23.01.2007 05:45, removed_email_address@domain.invalid wrote:

The problem is that the ruby compiler thinks that the first “end” is the
exit
else

do something else

end

Alternatively

exit if uinput == “EXIT”

robert