2012-02-21 39 views
3

我寫了下面的代碼:如果IF條件變爲true,我該如何跳過迭代,然後轉到第一行do .. end?

require 'net/http' 
require 'uri' 
require 'IPAddr' 
require 'timeout' 
require 'Resolv' 
require 'open-uri' 

#puts "Origin IP:\n\n" 
#originip = gets() 
(IPAddr.new("209.85.175.120")..IPAddr.new("209.85.175.150")).each do |address| 
    uri = URI("http://#{address.to_s}") 
    puts "#{uri}" 
    http = Net::HTTP.new(uri.host, uri.port) 
    puts "#{http}" 
    Net::HTTP.start(uri.host, uri.port) do |http| 
    request = Net::HTTP::Get.new uri.request_uri 
    response = http.request request 
    if response.code == "301" || response.code == "400" then 

    end 
    #request.initialize_http_header({"Origin" => "#{originip}"}) 
    end 

是否有可能去在我if條件

if response.code == "301" || response.code == "400" then 
# condition 
end 

在上面的代碼變成真正的線uri = URI("http://#{address.to_s}")?如果我的條件成立,我怎樣才能進入下一個IP地址並跳過當前的IP地址?

是否有可能在Ruby中執行類似於標籤和goto的語句?

回答

9

你想跳到下一個迭代,是嗎?只需使用next即可。

+0

沒有,想跳過當前迭代,如果我得到響應,按我的,如果條件並進入下一個讓我不得到超時錯誤,如果在給定範圍內的IP一個響應不正確,我可以去下一個IP去執行所需的東西 – 2012-02-21 16:58:03

+1

好的。 'next'跳過當前的迭代,所以你可以使用它。 – 2012-02-21 17:41:53

5
next if response.code == "301" || response.code == "400" 
相關問題