有没有办法可以将用户返回到他们来自的地方,而无需深入研究其他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 :(得分:3)
你所描述的那种东西是由finite state machine解决的。
您可以定义程序的状态以及它们可以进入的状态,而不是拥有一个大而复杂的if / elsif块。您可以像流程图一样绘制它。
start
start
- &gt; wait
或start
wait
- &gt; quit
或start
quit
- &gt;退出程序FSM可以作为一个类完成,每个状态都是一个方法。这些方法只需要了解他们的后续步骤。
此处an article about state machines in Ruby和list of Ruby state machine libraries。