返回用户,他们从
问题描述:
来的地方有没有什么可以回报用户,他们来自何处,而无需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
答
你正在描述的那种东西是由finite state machine解决的。
不是有一个大的,如果/ ELSIF块,你定义你的程序的状态,什么状态,他们可以进入复杂。你可以像流程图一样绘制出来。
- 启动程序 - >
start
-
start
- >wait
或start
-
wait
- >quit
或start
-
quit
- >退出程序
的FSM可以做到作为一个阶级,每个国家都是一种方法。这些方法只需要知道他们的下一步。
这里的an article about state machines in Ruby和list of Ruby state machine libraries。
从'examples'和控制就返回会返回给调用者,这是'start'方法(在这种情况下) –
我必须要深入到else if语句这样做的,这就是我'm试图避免.. – ekultek
你是什么意思,“深入到'else/if'语句”?发布一些信息,以便我们知道你在说什么。 –