2012-02-21 40 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" 
相关问题