2015-09-27 87 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

相關問題