"Goto line" function?

Ok, I've read through the forum but I haven't got my answer. If a value
in my program is true, I want my program to go back to a line like this:

(Example of the program)

1. puts ' '
2. puts ' '
3. puts '****************************'
4. puts '** (Rules of the program) **'
5. puts '****************************'
6. puts ' '
7. puts 'Ohh, hello there! What are you named many names?'
8.
9. names = gets.chomp
10.
11. if names == '2'
12. puts ' '
13. puts 'Are you named two names?'
14. puts ' '
15. answer = gets.chomp
16. if answer == 'yes'
17. (the program continues)
18.
19. BUT if answer == 'no'
20. goto.line.7 (And skip the rules, just restart it and begin
from line 7.)

What is the command? I know it's not "goto.line.X" but what is it? "back
to line.X"? "goto.lineX"? What is the command?

···

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

You don't want to do this. This is an old bad practice from BASIC days
that is thankfully almost forgotten.

You want a while loop around lines 7-20.

In other cases there are other workarounds around goto.

If you must goto, there is a hack with call//cc. I needed it once, you
probably won't. Ever.

Aur

Check RubyMentor at http://rubymentor.rubyforge.org/

···

On 3/9/07, Helgitomas Gislason <nitrohelgso@hotmail.com> wrote:

Ok, I've read through the forum but I haven't got my answer. If a value
in my program is true, I want my program to go back to a line like this:

(Example of the program)

1. puts ' '
2. puts ' '
3. puts '****************************'
4. puts '** (Rules of the program) **'
5. puts '****************************'
6. puts ' '
7. puts 'Ohh, hello there! What are you named many names?'
8.
9. names = gets.chomp
10.
11. if names == '2'
12. puts ' '
13. puts 'Are you named two names?'
14. puts ' '
15. answer = gets.chomp
16. if answer == 'yes'
17. (the program continues)
18.
19. BUT if answer == 'no'
20. goto.line.7 (And skip the rules, just restart it and begin
from line 7.)

What is the command? I know it's not "goto.line.X" but what is it? "back
to line.X"? "goto.lineX"? What is the command?

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

Helgitomas Gislason wrote:

Ok, I've read through the forum but I haven't got my answer. If a value
in my program is true, I want my program to go back to a line like this:

(Example of the program)

1. puts ' '
2. puts ' '
3. puts '****************************'
4. puts '** (Rules of the program) **'
5. puts '****************************'
6. puts ' '
7. puts 'Ohh, hello there! What are you named many names?'
8.
9. names = gets.chomp
10.
11. if names == '2'
12. puts ' '
13. puts 'Are you named two names?'
14. puts ' '
15. answer = gets.chomp
16. if answer == 'yes'
17. (the program continues)
18.
19. BUT if answer == 'no'
20. goto.line.7 (And skip the rules, just restart it and begin
from line 7.)

What is the command? I know it's not "goto.line.X" but what is it? "back
to line.X"? "goto.lineX"? What is the command?

Addressing just the loop/goto issue, how about summat like:

#!/usr/bin/env ruby
done=false
until done
   puts ' '
   puts '****************************'
   puts '** (Rules of the program) **'
   puts '****************************'
   puts ' '
   puts 'Ohh, hello there! What are you named many names?'
   names = gets.chomp
   if names == '2'
     puts ' '
     puts 'Are you named two names?'
     puts ' '
     answer = gets.chomp
     done = true if answer == 'yes'
   end
end
#This is where "the program continues"
puts 'the end'

This gives me the output:

lnx:scratch : blah.rb

···

****************************
** (Rules of the program) **
****************************

Ohh, hello there! What are you named many names?
2

Are you named two names?

no

****************************
** (Rules of the program) **
****************************

Ohh, hello there! What are you named many names?
2

Are you named two names?

yes
the end

cheers,

paulv

--
Paul van Delst Ride lots.
CIMSS @ NOAA/NCEP/EMC Eddy Merckx

Less mind-bending is catch/throw, or 'redo' within a block.

If you *really* want to write BASIC programs in Ruby, this was discussed
several years ago in ruby-talk - search the archives :slight_smile:

···

On Sat, Mar 10, 2007 at 07:06:25AM +0900, SonOfLilit wrote:

If you must goto, there is a hack with call//cc. I needed it once, you
probably won't. Ever.