2011-11-26 59 views
1

如果在Ruby中使用條件,那麼編寫下面的最佳方法是什麼?如何在Ruby中減少長條件?

if ( $response_code == "400" || 
     $response_code == "401" || 
     $response_code == "402" || 
     $response_code == "403" || 
     $response_code == "404" || 
     $response_code == "411" || 
     $response_code == "500" || 
     $response_code == "501" || 
     $response_code == "502" || 
     $response_code == "0") 
    { 
     return false; 
    } 

紅寶石似乎有做事情,所以想知道如果我能避免寫長的東西,這樣的簡潔的方式。

+2

哪些方面是你想減少?行數?執行時間處理時間?程序總大小? –

+2

嗯。我想知道你爲什麼選擇這些特定的響應代碼?例如,是否有一些原因,例如,您正在測試500,501和502,但不是其他任何5xx代碼?或者你真的只是想測試任何4xx或5xx(或0)代碼? (順便說一句,我想你肯定會*想要測試418.) –

回答

7

可能的解決辦法:

ACCEPTED_CODES = [ "400", "401", "402", "403", "404", "411", "500", "501", "502", "0" ] 

def test(response_code) 
    !ACCEPTED_CODES.include?(response_code) 
end 
+1

但是'$ response_code'是一個字符串,所以你應該可以調用'to_i'。 –

+0

@DavidGrayson我注意到它並修復了,謝謝 –

+1

測試方法沒有參數? – steenslag

1
if [400, 401, 402, 403, 404, 411, 500, 501, 502, 0].include?($response_code.to_i) 

end 
1
CODES = [400, 401, 402, 403, 404, 411, 500, 501, 502, 0] 

return CODES.exclude? $response_code.to_i 
4
case $response_code.to_i 
    when 400, 401, 402, 403, 404, 411, 500, 501, 502, 0 
    return false 
    end