2015-09-27 76 views
0

来的地方有没有什么可以回报用户,他们来自何处,而无需if语句深入到别的办法吗?返回用户,他们从

比如,说他们从这里走过:

def start 
    puts "Some code press 'E' to go to examples" 
    input = gets.chomp 
    if input =~ /e/i 
    examples 
    else 
    start 
    end 
end 

他们到了例子:

def examples 
    puts "Examples of code to return to where you came from type 'return'" 
    input = gets.chomp 
    if input == 'return' 
    #<= (return them to where they came from) 

我知道,为了做到这一点,你叫这将是start的方法,但我希望他们能够回到他们从不管他们来自哪里来的地方,无论是start, lesson_1, lesson_2, lesson_3等,而无需进行的,如果ELSIF else语句一个可笑的金额。有没有办法做到这一点,而不是超级深入if else语句?

含义;

if input == "y" 
    start 
    if input == "r" 
    return 
    if input == "w" 
     wait 
    else 
     return 
    end 
    else 
    start 
    end 
else 
    return 
end 
+0

从'examples'和控制就返回会返回给调用者,这是'start'方法(在这种情况下) –

+0

我必须要深入到else if语句这样做的,这就是我'm试图避免.. – ekultek

+0

你是什么意思,“深入到'else/if'语句”?发布一些信息,以便我们知道你在说什么。 –

回答

3

你正在描述的那种东西是由finite state machine解决的。

不是有一个大的,如果/ ELSIF块,你定义你的程序的状态,什么状态,他们可以进入复杂。你可以像流程图一样绘制出来。

  • 启动程序 - >start
  • start - >waitstart
  • wait - >quitstart
  • quit - >退出程序

的FSM可以做到作为一个阶级,每个国家都是一种方法。这些方法只需要知道他们的下一步。

这里的an article about state machines in Rubylist of Ruby state machine libraries

+0

对于一个FSM有没有一个宝石,我必须下载使用? – ekultek

+0

@ekultek我已经添加了一些链接到答案。 – Schwern

+1

谢谢你!赞赏 – ekultek

相关问题