[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

How do I exit my program at any time?

Helgitomas Gislason

9/6/2007 9:16:00 PM

Hello. When it comes to big, complex and long programs, you don't always
want to be needing to say at every single string:

if answer == 'exit'
exit
end

Get the point? Let's say you're making a program that's kinda like this:

--------------------
puts 'Hello, my name is Jimmy Hendrix. What\'s your name?'
puts ' '

name = gets.chomp

If name == 'Charlie' or name == 'Matt'
puts 'Ahh, great to see you. You're a boy.'
if name == 'Ann' or name == 'Sandria'
puts 'I see, you're a girl.'
end
----------------------

Now, if I wanted to exit my program lets say when I'm supposed to say
the name, I would be needing to do a, if name == 'exit', exit. and the
same thing if I wanted to exit when I was deeper in a longer program.

The main point I'm trying to get to here is: "Is there any function that
I can put at the beginning or the end, that says my program to exit
whenever I say exit WITHOUT having to put the:

if name == 'exit'
exit
end

at every string I want to have the possibility yo exit from??
--
Posted via http://www.ruby-....

5 Answers

Phrogz

9/6/2007 9:23:00 PM

0

On Sep 6, 3:15 pm, Helgitomas Gislason <nitrohel...@hotmail.com>
wrote:
> The main point I'm trying to get to here is: "Is there any function that
> I can put at the beginning or the end, that says my program to exit
> whenever I say exit WITHOUT having to put the:
>
> if name == 'exit'
> exit
> end
>
> at every string I want to have the possibility yo exit from??

class Object
def gets( *args )
result = super
exit if result =~ /\A\s*exit\s*\z/oi
result
end
end

However, instead of monkey-patching the object class (and shadowing)
the Kernel#gets method), I would suggest instead writing your own
method:

def gets_or_exit
result = gets
exit if result =~ /\A\s*exit\s*\z/oi
result
end

This gives you the ability to decide if there's a time when you want
to use gets without exiting, and to do additional common work (like
always #chomp the result before returning it).

Martin DeMello

9/6/2007 9:24:00 PM

0

On 9/7/07, Helgitomas Gislason <nitrohelgso@hotmail.com> wrote:
> Hello. When it comes to big, complex and long programs, you don't always
> want to be needing to say at every single string:
>
> if answer == 'exit'
> exit
> end

def get_input(prompt)
puts prompt
retval = gets.chomp
if retval == 'exit'
exit
else
return retval
end
end

a = get_input "Enter your name"
# etc.

martin

Tim Pease

9/6/2007 9:30:00 PM

0

On 9/6/07, Helgitomas Gislason <nitrohelgso@hotmail.com> wrote:
>
> The main point I'm trying to get to here is: "Is there any function that
> I can put at the beginning or the end, that says my program to exit
> whenever I say exit WITHOUT having to put the:
>

Redefine gets to do what you want ...

module Kernel
def gets( sep = $/ )
str = super
str.chomp!
exit if str == 'exit'
str
end
end

Or if you are not comfortable with redefining methods in Kernel, write
your own gets method ...

def gets_and_exit( sep = $/ )
str = gets( sep )
....
end

Blessings,
TwP

Helgitomas Gislason

9/6/2007 9:54:00 PM

0

Thank you very much, people. I really appriciate it.
--
Posted via http://www.ruby-....

Jeremy Woertink

9/6/2007 11:13:00 PM

0

wow, I like their ideas better. I was gonna say, put the whole program
into a huge loop. I guess I need to start thinking on an easier
level :)


~Jeremy

On Sep 6, 2:53 pm, Helgitomas Gislason <nitrohel...@hotmail.com>
wrote:
> Thank you very much, people. I really appriciate it.
> --
> Posted viahttp://www.ruby-....