2016-02-20 52 views
0

假設我有這個簡單的if-elsif-else代碼塊。如果條件爲真,則返回幾行

def 
    # some code... 
    input = get.chomp 
    if input == 1 
    puts "foo" 
    elsif input == 2 
    puts "bar" 
    else 
    # exit 
    end 
    # some more code... 
end 

我如何告訴節目回去,並再次要求輸入病例12並在此方法中,代碼繼續,如果else被觸發?我不想回到開始的方法,而是我只想回到input變量聲明。

+0

這樣做的一種方法:在方法之外,您可以有一個循環,並且在該循環內,您可以調用此方法。如果此方法從'input == 1'或'input == 2'返回,則告訴循環再次重新運行該方法。 –

回答

1
def 
    # some code... 
    loop do 
    input = get.chomp 
    if input == 1 
     puts "foo" 
     break 
    elsif input == 2 
     puts "bar" 
     break 
    end 
    end 
    # some more code... 
end 

注:您的兩個if/elsif條件將永遠無法滿足。

0
# main procedure 
# defined here so other functions could be declared after 
# the main procedure is called at the bottom 
def main 

    loop do 
    puts "Insert a number" 
    input = gets.chomp.to_i 

    if isValidInput input 
     puts case input 
     when 1 
      "foo" 
     when 2 
      "bar" 
     end 
     break 
    end 
    end #loop 

    puts "Other code would execute here" 

end 

# Validity Checker 
# makes sure your input meets your condition 
def isValidInput(input) 
    if [1,2].include? input 
    return true 
    end 
    return false 
end 


main 
+0

你只需要行'[1,2] .include?輸入'在'isValidInput'中。 –

+0

正確。你也不需要這個功能,這是所有設置的更多的參與 – vol7ron

相關問題