将用户返回到他们来自的地方

时间:2015-09-27 18:56:43

标签: ruby

有没有办法可以将用户返回到他们来自的地方,而无需深入研究其他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

1 个答案:

答案 0 :(得分:3)

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

您可以定义程序的状态以及它们可以进入的状态,而不是拥有一个大而复杂的if / elsif块。您可以像流程图一样绘制它。

  • 启动该计划 - &gt; start
  • start - &gt; waitstart
  • wait - &gt; quitstart
  • quit - &gt;退出程序

FSM可以作为一个类完成,每个状态都是一个方法。这些方法只需要了解他们的后续步骤。

此处an article about state machines in Rubylist of Ruby state machine libraries